在Java并发编程时,同步都会存在着巨大的性能开销,因此,人们使用了很多的技巧来降低同步的影响,这其中有一些技巧很好,但是也有一些技巧存在一些缺陷,下面要结束的双重检查加锁(DCL)就是有缺陷的一类. 由于早期的JVM在性能上存在一些有待优化的地方,因此在并发编程中,延迟初始化经常被用来降低程序的开销.编写正确的延迟初始化需要使用同步,但是直接在初始化之前使用同步会对性能产生影响.所以一些人就提出了双重检查加锁,并声称能够解决这个矛盾.如图所示就是双重检查加锁的代码. 上图代码中,对Resour