public class Singleton { private static volatile Singleton singleton = null;//volatile阻止JVM对指令执行顺序的优化,防止乱序执行导致导致返回的实例为半成品 private void Singleton() {} public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) {//双重检查,如果第二个线程进入不做检查会产生不同的实例 singleton = new Singleton(); } } } return singleton; } public static void main(String[] args) { System.out.println(Singleton.getInstance() == Singleton.getInstance()); } }