public class Test29 {
public static void main(String[] args) {
SingleObject singleObject = SingleObject.getSingleObject();
}
}
//单例 饿汉模式
class SingleObject2{
private static volatile SingleObject2 singleObject = new SingleObject2();
private SingleObject2 (){}
public static SingleObject2 getSingleObject(){
return singleObject;
}
}
//单例 饱汉模式
class SingleObject{
private static volatile SingleObject singleObject;
private SingleObject (){}
//double Check lock
public static SingleObject getSingleObject(){
if(singleObject == null){
synchronized (SingleObject.class){
if(singleObject == null){
singleObject = new SingleObject();
}
}
}
return singleObject;
}
}