基于 双重检查锁定 的单例模式:
public class DoubleCheckedLockingSingleton{
private static volatile DoubleCheckedLockingSingleton instance;
public static DoubleCheckedLockingSingleton getInstance(){
if(instance == null)
synchronized(DoubleCheckedLockingSingleton.class)
if(instance == null)
instance = new DoubleCheckedLockingSingleton();
return instance;
}
基于 类的初始化(静态内部类) 的单例模式:
public class ClassInitSingleton{
public static class Instance{
public static Instance instance = new Instance();
}
public static Instance getInstance(){
return Instance.instance;
}
}
参考资料:
1、双重检查锁定与延迟初始化
http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization#anch102163
说明:
《Java并发编程艺术》里就是使用的上面的这篇文章