1..饿汉式
public class Singleton1 { private static Singleton1 singleton=new Singleton1(); public Singleton1() { } public static Singleton1 getSingleton(){ return singleton; } }
2.懒汉式
线程不安全
这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。
public class Singleton2 { private static Singleton2 singleton=null; public Singleton2() { } public static Singleton2 getSingleton() { if(singleton==null){ singleton = new Singleton2(); } return singleton; } }
线程安全
public class Singleton2 {
private static Singleton2 singleton=null;
public Singleton2() {
}
public static synchronized Singleton2 getSingleton() {
if(singleton==null){
singleton = new Singleton2();
}
return singleton;
}
}