Java Volatile应用单例模式实现过程解析
引入synchronized关键字输出结果:我们能够发现,通过引入Synchronized关键字,能够解决高并发环境下的单例模式问题但是synchronized属于重量级的同步机制,它只允许一个线程同时访问获取实例的方法,但是为了保证数据一致性,而减低了并发性,因此采用的比较少通过引入DCL Double Check Lock双端检锁机制最后输出的结果为:从输出结果来看,确实能够保证单例模式的正确性,但是上面的方法还是存在问题的DCL机制不一定是线程安全的,原因是有指令重排的存在,加入volatile可以禁止指令重排原因是在某一个线程执行到第一次检测的时候,读取到 instance 不为null,instance的引用对象可能没有完成实例化。因为 instance = new SingletonDemo();可以分为以下三步进行完成:。这样就会造成什么问题呢?