class SingletonTest {
private static SingletonTest instance = new SingletonTest();
private SingletonTest(){}
public static SingletonTest getInstance(){
return instance;
}
}
class SingletonTest02 {
private static SingletonTest02 instance;
private SingletonTest02(){}
private static SingletonTest02 getInstance(){
if(instance == null){
instance = new SingletonTest02();
}
return instance;
}
}
class SingletonTest03 {
private static volatile SingletonTest03 instance;
private SingletonTest03(){}
private static SingletonTest03 getInstance(){
if(instance == null){
/多线程情况下 这一步可能还是会有两个线程进入 这样的话就new了多个实例对象 /
synchronized(SingletonTest03.class){
if(instance == null){
/ 在锁了之后在判断一次就好了/
instance = new SingletonTest03();
}
}
}
return instance; // 如果不加volatile的话,instance可能判断不为空,直接返回了一个半成品的instance
}
}



