java设计模式-单例模式
来源:互联网 发布:淘宝的steam游戏 编辑:程序博客网 时间:2024/05/21 07:50
饿汉式单例类
线程不安全
public class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); /** * 私有默认构造子 */ private EagerSingleton(){} /** * 静态工厂方法 */ public static EagerSingleton getInstance(){ return instance; }}
懒汉式单例类
线程安全
public class LazySingleton { private static LazySingleton instance = null; /** * 私有默认构造子 */ private LazySingleton(){} /** * 静态工厂方法 */ public static synchronized LazySingleton getInstance(){ if(instance == null){ instance = new LazySingleton(); } return instance; }}
双重检查加锁
线程安全
public class Singleton { private volatile static Singleton instance = null; private Singleton(){} public static Singleton getInstance(){ //先检查实例是否存在,如果不存在才进入下面的同步块 if(instance == null){ //同步块,线程安全的创建实例 synchronized (Singleton.class) { //再次检查实例是否存在,如果不存在才真正的创建实例 if(instance == null){ instance = new Singleton(); } } } return instance; }}
Lazy initialization holder class模式
线程安全
public class Singleton { private Singleton(){} /** * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 * 没有绑定关系,而且只有被调用到时才会装载,从而实现了延迟加载。 */ private static class SingletonHolder{ /** * 静态初始化器,由JVM来保证线程安全 */ private static Singleton instance = new Singleton(); } public static Singleton getInstance(){ return SingletonHolder.instance; }}
单例和枚举
public enum Singleton { /** * 定义一个枚举的元素,它就代表了Singleton的一个实例。 */ uniqueInstance; /** * 单例可以有自己的操作 */ public void singletonOperation(){ //功能处理 }}
原文-->点击打开链接
0 0
- java 设计模式,单例设计模式
- java设计模式-单例设计模式
- java设计模式-单例设计模式
- Java设计模式 单例设计模式
- Java设计模式------单例设计模式
- java设计模式----->单例设计模式
- java设计模式:单例设计模式
- java设计模式-----单例设计模式
- Java设计模式----单例设计模式
- java设计模式-单例设计模式
- java设计模式:单例设计模式
- java 设计模式-单例设计模式
- Java设计模式--单例设计模式
- java设计模式---单例设计模式
- Java设计模式-单例设计模式
- JAVA设计模式:单例设计模式
- java-单例设计模式
- Java设计|单例模式
- java实现md5加密示例
- Android Studio 出现AAPT err(Facade for): libpng error: Not a PNG file 错误解决方案
- Android LinearLayout设置白色背景、灰色边框、倒圆角
- curl的使用
- iOS Swift 基础
- java设计模式-单例模式
- hdu 1251 统计难题 字典树入门
- 为什么链表操作的函数的参数是双指针型变量
- C++中protected的访问权限
- POJ1330 TarjanLCA
- 银行家算法
- poj 2549 Sumsets
- 同一局域网内的其他电脑访问我的电脑本地的网站
- javascript获取对象的方法