public class Singleton {
//volatile确保,当uniqueInstance变量被初始化成singleton实例时,
//多个线程正确地处理uniqueInstance变量。
private volatile static Singleton uniqueInstance;
private Singleton(){
}
public static Singleton getInstance(){
//检测实例,如果不存在,就进入同步区块
if(uniqueInstance==null){
//注意,只有第一次才彻底执行这里的代码
synchronized (Singleton.class){
//再一次检测,如果仍然是Null才创建实例
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}
//volatile确保,当uniqueInstance变量被初始化成singleton实例时,
//多个线程正确地处理uniqueInstance变量。
private volatile static Singleton uniqueInstance;
private Singleton(){
}
public static Singleton getInstance(){
//检测实例,如果不存在,就进入同步区块
if(uniqueInstance==null){
//注意,只有第一次才彻底执行这里的代码
synchronized (Singleton.class){
//再一次检测,如果仍然是Null才创建实例
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}