什么是单例模式?
在整个JVM运行周期中只有一个实例的对象。
用法:(线程安全+double check)
为什么要使用双重检查锁?
·····第二层if的作用:
程序初始化,线程1进入synchronized块,instance为空,满足第二个if,进入赋值。线程二在
synchronized块外等待,线程1赋值完毕后线程2才进入synchronized块,此时不满足第二个if,直接return。这样可以避免第二个线程重复new一个新实例。
·····第一层if的作用:
优化性能,避免每次线程调用getInstance,都在等着进入synchronized块,导致程序运行延时,非常耗费性能。