1.懒汉式,线程安全,效率低;
public class A {
private static A a = null;
private A () {}
public static synchronized A getInstance() {
if (a == null) {
a = new A();
}
return a;
}
}
2.懒汉式,双重判断
public class A {
private volatile static A a ;
private A () {}
public static A getInstance() {
if (a == null) {
synchronized (A.class){
if (a == null) {
a = new A();
}
}
}
return a;
}
}
3.饿汉式
public class A {
private static A a = new A();
private A () {}
public static A getInstance() {
return a;
}
}