多线程与高并发(3)
安全发布对象
在静态初始化函数中初始化一个对象
将对象的引用保存到volatile类型域或者AtomicReference对象中
将对象的引用保存到某个正确构造对象的final类型域中
将对象的引用保存到一个由锁保护的域中
/**
* 懒汉模式
* 双重同步锁单例模式
* @author Guo
*
*/
public class SingletonExample1 {
private SingletonExample1(){
}
// volatile禁止指令重排
private volatile static SingletonExample1 instance = null;
public static SingletonExample1 getInstance(){
if(instance == null){
synchronized(SingletonExample1.class){
if(instance == null){
instance = new SingletonExample1();
}
}
}
return instance;
}
}

浙公网安备 33010602011771号