public class SingletonDemo {
private volatile static SingletonDemo instance;
private SingletonDemo(){
System.out.println("Singleton has loaded");
}
public static SingletonDemo getInstance(){
if(instance==null){
synchronized (SingletonDemo.class){
if(instance==null){
instance=new SingletonDemo();
}
}
}
return instance;
}
}
声明变量是 volatile 的,JVM 保证了每次读变量都从内存中读,跳过 CPU cache 。
java单例模式双重校验写法
最新推荐文章于 2024-05-16 20:07:23 发布