「ダブルチェックロック」のケースに遭遇している可能性があると思われるアプリのコードを見ています。私たちが行っているのと同様のサンプルコードをいくつか作成しました。
誰かがこれがダブルチェックロックをどのように経験しているのかを見ることができますか?それともこれは安全ですか?
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から借用したベースコード。