1. 简单使用的饿汉单例模式
public class Single1 {
private Single1() {
}
private static Single1 single = new Single1();
public static Single1 getSingle() {
return single;
}
}
public class SingleTest {
public static void main(String[] args) {
Single1 s1 = Single1.getSingle();
Single1 s2 = Single1.getSingle();
System.out.println(s1 == s2);
}
}
2.懒汉单例模式
public class Single2 {
private Single2() {
}
private static Single2 single = null;
public static Single2 getSingle() {
if (single == null) {
single = new Single2();
}
return single;
}
}
3. 懒汉单例模式升级双检索模式
public class Single3 {
private Single3() {
}
private static Single3 single = null;
private static Object obj = new Object();
public static Single3 getSingle() {
if (single == null) {
synchronized (obj) {
if (single == null) {
single = new Single3();
}
}
}
return single;
}
}