饿汉模式(线程不安全)
public class SingleTon {
private static SingleTon instance = new SingleTon();
private SingleTon(){}
public SingleTon getInstance(){
return instance;
}
}
懒汉模式(线程安全)
public class SingleTon {
private static SingleTon instance;
private SingleTon(){}
public SingleTon getInstance(){
if (instance == null){
synchronized (SingleTon.class){
if (instance == null){
instance = new SingleTon();
}
}
}
return instance;
}
}
静态内部类
public class SingleTon {
private static class SingleTonHolder{
private static final SingleTon INSTANCE = new SingleTon();
}
public SingleTon getInstance(){
return SingleTonHolder.INSTANCE;
}
}
枚举
public class SingleTon {
private SingleTon(){}
public static SingleTon getInstance(){
return SingleTonEnum.INSTANCE.getInstance();
}
private enum SingleTonEnum{
INSTANCE;
private SingleTon singleTon;
SingleTonEnum(){
singleTon = new SingleTon();
}
public SingleTon getInstance(){
return singleTon;
}
}
}
较常使用的是懒汉模式,双判断一加锁