读书人

Java Double-Checked Locking 已死C

发布时间: 2012-08-28 12:37:01 作者: rapoo

Java Double-Checked Locking 已死,C++ 呢?

已经有众多文章讨论 double-checked locking 模式在 Java 下面无法正常工作,这里先简要的总结一下。

根本原因在于 Java 的 memory model 允许所谓的 out-of-order write ,对于下面的 Java 代码,out-of-order write 可能导致灾难性的结果

class SingletonTest{private static SingletonTest instance;private SingletonTest{}private static class Instance//嵌套类只加载一次。{static fianl SingletonTest Instance=new SingletonTest();}public static SingletonTest(){return Instance.instance;}}
?

?

读书人网 >C++

热点推荐