我想知道是否可以可靠地证明双重检查锁定已被破坏:
public static Singleton getInstanceDC() {
if (_instance == null) { // Single Checked
synchronized (Singleton.class) {
if (_instance == null) { // Double checked
_instance = new Singleton();
}
}
}
return _instance;
}
有没有可靠的方法来创建一个测试或程序,表明它不起作用?有没有正式的验证证明?
答案 0 :(得分:1)
答案 1 :(得分:0)
我找到了我要找的东西: 有一个名为jcstress的java工具,它用于验证JVM的正确性。
更准确地说,DCL测试用例的源代码可以在这里找到: http://hg.openjdk.java.net/code-tools/jcstress/file/9270b927e00f/tests-custom/src/main/java/org/openjdk/jcstress/tests/singletons/UnsafeDCL.java#l71
我想说这是按规格证明的:)