今天又想起了单例模式,看了网上好多文章,加锁和可见性。自己也写了一遍单例模式。
public class SingleTon {
private SingleTon(){
}
private static volatile SingleTon singleTon=null;
public static SingleTon getInstance(){
if(singleTon==null){
synchronized(SingleTon.class){
if(singleTon==null){
singleTon=new SingleTon();
}
}
}
return singleTon;
}
}
另外一种实现方式就是内部静态类。
public class SingleTon2 {
private SingleTon2(){
}
private static class SingleTonHolder{
static SingleTon2 singleTon2=new SingleTon2();
}
public static SingleTon2 getInstance(){
return SingleTonHolder.singleTon2;
}
}