方法一:volatile 关键字单例
public class Singleton {
//volatile 关键字 JVM对代码优化可能会出现重排序的情况 volatile 可以让JVM不进行重排序
private volatile static Singleton singleton;
private Singleton (){
}
public static Singleton getInstance(){
if (singleton == null){
synchronized (Singleton .class){
if (singleton == null){
singleton = new Singleton ();
}
}
}
return singleton;
}
}
方法二: 静态内部类
public class Singleton {
public static class SingletonHandler{
public static Singleton singleton = new Singleton();
}
public static Singleton getInstance(){
return SingletonHandler.singleton;
}
}