[基础] 单例双重判断
2018-09-18 本文已影响0人
兔斯基第2号
单例双重判断 https://blog.csdn.net/shallynever/article/details/52503139
第一个if判断的作用:是为了提高程序的 效率,当SingletonTwo对象被创建以后,再获取SingletonTwo对象时就不用去验证同步代码块的锁及后面的代码,直接返回SingletonTwo对象
第二个if判断的作用:是为了解决多线程下的安全性问题,也就是保证对象的唯一。如果没有第二个if判断,在上面介绍的步骤5处,线程B进入synchronized (instance)块,不用去验证instance是否为null,就会直接创建一个SingletonTwo新对象,这样整个程序运行下来就有可能创建多个实例。