我在看我们的应用程序中的一些代码,我认为可能会遇到“Double-checked locking”的情况。我写了一些与我们所做的相似的示例代码。是这个密码双重锁定锁定安全吗?
任何人都可以看到这可以体验到双重检查锁定?或者这是安全的?
class Foo {
private Helper helper = null;
public Helper getHelper() {
Helper result;
synchronized(this) {
result = helper;
}
if (helper == null) {
synchronized(this) {
if (helper == null) {
helper = new Helper();
}
}
}
return helper;
}
}
从wiki借来的基本代码。
是的,这是双重检查锁定 –
为什么你声明'结果',然后不使用它? –
@Aishwar,你可能应该更详细地阅读你链接到的维基百科页面,特别是它所说的'volatile':使用它(或不使用DCL)。 – Bruno