Java Singletom 单例模式 常用实现方式
来源:互联网 发布:php popen 异步 编辑:程序博客网 时间:2024/06/16 13:13
1.懒汉,线程不安全
这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。
public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; 1 } }
2.懒汉,线程安全
这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。
public class Singleton { private static Singleton instance; private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
3.饿汉
这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中大多数都是调用getInstance方法, 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance显然没有达到lazy loading的效果。
public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }
4.饿汉,变种
表面上看起来差别挺大,其实更第三种方式差不多,都是在类初始化即实例化instance。
public class Singleton { private Singleton instance = null; static { instance = new Singleton(); } private Singleton (){} public static Singleton getInstance() { return this.instance; } }
0 0
- Java Singletom 单例模式 常用实现方式
- Java单例模式常用的3种实现方式
- java单例模式的实现方式
- java单例模式的实现方式
- Java单例模式实现方式
- 常用设计模式-单例的几种实现方式
- 现在常用的单例模式实现方式
- Java实现单例模式的3中实现方式
- 单例模式实现方式
- 【java】单例模式的两种实现方式
- 单例模式(java中五种单例实现方式)
- Java单例模式七种实现方式
- Java 单例模式的安全实现方式
- Java单例模式的三种实现方式
- 单例模式的Java泛型实现方式
- 单例模式(java两种方式实现)
- Java单例模式几种实现方式
- Java中四种线程安全的单例模式实现方式
- 学习TensorFlow,生成tensorflow输入输出的图像格式
- java反射的例子
- python网页自动摘要和关键词提取
- 187. Repeated DNA Sequences
- googles示例RecyclerView
- Java Singletom 单例模式 常用实现方式
- inteliij 14 新建maven项目 停在 [INFO] Generating project in Batch mode 的解决办法
- 网络编程知识(2)--Socket理解
- java基本数据类型、对应的封装类以及字符串之间的相互转换
- mysql开启缓存的一些语句
- 二分法插入排序代码
- ClouderaManager修改集群的IP
- 开篇
- d3.js——直方图的绘制及过去知识点的结合