饿汉式
public class Singleton1 {
public static final Singleton1 INSTANCE = new Singleton1();
private Singleton1(){
}
}
使用枚举,更简洁
public enum Singleton2 {
INSTANCE
}
懒汉式
- 考虑线程安全问题,double check(双重校验)
public class Singleton3 {
public static Singleton3 instance;
private Singleton3(){}
public static Singleton3 getInstance() {
if (instance == null){
synchronized (Singleton3.class){
if(instance == null){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
instance = new Singleton3();
}
}
}
return instance;
}
}
- 使用静态内部类,写法简洁
public class Singleton4 {
private Singleton4(){}
private static class Inner{
public static final Singleton4 INSTANCE = new Singleton4();
}
public static Singleton4 getInstance(){
return Inner.INSTANCE;
}
}
网友评论