懒汉模式与饿汉模式
2012-08-02 23:08
225 查看
饿汉模式:加截类的时候就创建对象
懒汉模式:调用getInstance()方法时才创建对象
从上面可以看出,懒汉模式虽然实现了延迟加载,但会导致线程同步的问题。为了实现同步,不得不加同步锁。
如果直接在方法上加synchronized锁,每次调用时都要判断锁,效率比较低。所以采用上面代码的方法实现同
步。但这样使代码繁琐了不少,所以通常情况下还是用饿汉模式创建单例。
class Single{ private Single(){} private static Single s = new Single(); pubic static Single getInstance(){ return s; } }
懒汉模式:调用getInstance()方法时才创建对象
class Single{ private Single(){} private static Single s = null; public static Single getInstance(){ //不在这里使用静态锁,因为如果在这里锁,每次获取对象都要判断锁,效率低 if(s==null){ //只有对象不为空的时候才判断锁,提高了效率 synchronized(Single.class){ //以当前类的字节码对象为锁 if(s==null){ s = new Single(); } } } } }
从上面可以看出,懒汉模式虽然实现了延迟加载,但会导致线程同步的问题。为了实现同步,不得不加同步锁。
如果直接在方法上加synchronized锁,每次调用时都要判断锁,效率比较低。所以采用上面代码的方法实现同
步。但这样使代码繁琐了不少,所以通常情况下还是用饿汉模式创建单例。
相关文章推荐
- 懒汉模式和饿汉模式
- 懒汉、饿汉单例模式具体代码
- C++实现一个单例模式(懒汉与饿汉)
- Singleton 单例模式(懒汉方式和饿汉方式)
- 单列模式,懒汉 ,饿汉
- 1、单例模式(饿汉/懒汉)
- 面试常考——【懒汉模式】与【饿汉模式】
- Singleton 单例模式(懒汉方式和饿汉方式)
- 单例模式的实现之懒汉,饿汉,双重校验锁,枚举和静态内部类以及单例模式的应用情景
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- 单例模式(饿汉模式和懒汉模式)
- 设计模式之单例设计模式(饿汉单例设计模式&懒汉单例设计模式)
- 单例模式(懒汉模式与饿汉模式)
- 单例模式使用 懒汉模式和饿汉模式以及使用enum方式的性能测试
- Singleton 单例模式(懒汉方式和饿汉方式)
- C++的单例模式与线程安全单例模式(懒汉/饿汉)
- 设计模式-单例模式(懒汉、饿汉)
- 黑马程序员——单例设计模式,饿汉加懒汉
- Singleton 单例模式(懒汉方式和饿汉方式)
- 单例模式简单解析--Singleton 单例模式(懒汉方式和饿汉方式)