![]() |
1
2
这不是懒惰。这是懒惰的(使用类加载器):
|
![]() |
2
1
不完全是这样。初始化发生在
|
![]() |
3
1
玩双重检查锁定就像玩火。有很多方法可以把它弄错。
双重检查锁定习惯用法的目的是避免不必要的
接下来是第二个代码段,如果要创建的单例是
Java的这种语义保证了字段在被引用之前不会被初始化,并且任何访问该字段的线程都会看到初始化该字段所产生的所有写操作。
Joshua Bloch教授和他的合著者解释了在这种情况下双重检查锁定是如何出错的 article . 值得一读。 |