首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

既线程保险又支持延迟加载的单例模式

2012-11-01 
既线程安全又支持延迟加载的单例模式??// 当 JVM 加载 LazyLoadedSingleton 类时,由于该类没有 static 属

既线程安全又支持延迟加载的单例模式

?

?

// 当 JVM 加载 LazyLoadedSingleton 类时,由于该类没有 static 属性,所以加载完成后便即可返回。只有第一次调用// getInstance()方法时,JVM 才会加载 LazyHolder 类,由于它包含一个 static 属性// singletonInstatnce,所以会首先初始化这个变量,这样即实现了一个既线程安全又支持延迟加载的单例模式。public class LazyLoadedSingleton {private LazyLoadedSingleton() {}private static class LazyHolder { // holds the singleton classprivate static final LazyLoadedSingleton singletonInstatnce = new LazyLoadedSingleton();}public static LazyLoadedSingleton getInstance() {return LazyHolder.singletonInstatnce;}}

?

附最简单的单例例子:

public class Singleton{       // static类型的类变量,只会赋值一次,保证线程安全    // 或将赋值语句放到静态代码块中,即 static {...}    private static Singleton instance = new Singleton();    // other fields...      // 构造方法为私有    private Singleton(){   }   public static Singleton getInstance(){       return instance;  }  // other methods}
?

?

from:漫谈设计模式

热点排行