volatile :保证可见性,但保证不了原子性。
保证不了原子性,所以在遇到数据并发处理的情况无法保证数据不一致,线程不安全。
dcl:双重检锁机制
public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton == null){ // 1 synchronized (Singleton.class){ // 2 if(singleton == null){ // 3 singleton = new Singleton(); // 4 } } } return singleton; } }
原文:https://www.cnblogs.com/wllhq/p/12918171.html