<span style="font-size:14px;">public class Singleton {
private Singleton(){}
private static Singleton instance=null;
public static synchronized Singleton getInstance(){
if(instance == null)
instance=new Singleton();
return instance;
}
}
</span>
但是这种方式在多线程模式下不安全。加入线程A执行完if语句后暂停,线程B执行后new了一个实例,线程A重新启动后又会new一个实例。
下面是多线程安全的方式:
public class Singleton{
private Singleton(){}
private static Singleton instance=null;
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance==null){
instance = new Singleton();
}
}
}
return instance;
}
}