/**
* 这是最简单的一直实现方式,它的不足之处是无法对instance做延迟加载
*/
public class Singleton1 {
private static Singleton1 instance = new Singleton1();
private Singleton1(){
System.out.println("Singleton1 is create");
}
public static Singleton1 getInstance(){
return instance;
}
}
/**
*这种方式实现了延迟加载,但是在多并发环境中同步对性能有影响
*/
public class Singleton2 {
private static Singleton2 instance = null;
private Singleton2(){
System.out.println("Singleton2 is create");
}
public static synchronized Singleton2 getInstance(){
if(instance == null){
instance = new Singleton2();
}
return instance;
}
}
/**
*使用内部类的方式实现单例,既可以做到延迟加载,也不必担心使用同步影响性能,是比较完善的实现方式。
*/
public class Singleton3 {
private Singleton3(){
System.out.println("Singleton3 is create");
}
public static Singleton3 getInstance(){
return SingletonHolder.instance;
}
private static class SingletonHolder{
private static Singleton3 instance = new Singleton3();
}
}