基于 双重检查锁定 的单例模式:
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并发编程艺术》里就是使用的上面的这篇文章

本文介绍了两种实现单例模式的方法:基于双重检查锁定的单例模式和基于类的初始化(静态内部类)的单例模式。双重检查锁定确保了实例化的线程安全性,而静态内部类方式则利用了Java类加载机制的特性。

被折叠的 条评论
为什么被折叠?



