Googleのアプリで「Double-checked locking」の1つのコードが発生している可能性があります。私が行っているのと同様のサンプルコードを書いています。このコードは二重チェックロックされていますか?
これはどのようにダブルチェックロックが発生する可能性があります誰が見ることができますか?それとも安全ですか?
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から借りたベースコード。
はい、これはダブルチェックロックです –
なぜ 'result'を宣言して使用しないのですか? –
@Aishwar、リンクしているウィキペディアのページ、特に「揮発性」については、それを使ってください(またはDCLを使わないでください)。 – Bruno