メインメニューを開く

差分

ダブル・チェック・ロッキング

191 バイト追加, 2015年12月10日 (木) 00:53
# 2行目の初めて使うときにコンストラクタが実行される。
#: [[コンストラクタ]]が実行されるタイミングは、オリジナル(newを実行した[[スレッド]]の持つ)インスタンスに対して外部から[[メンバー関数]]や[[メンバー変数]]に初回アクセスがあったときとなる。これを[[遅延初期化]](lazy initialization)という。これによりhage[[変数]]自体は[[null]]ではないので後続スレッドはコンストラクタを実行していない不完全な[[インスタンス]]の[[参照]]を取得できてしまう。
 
[[Objective-C]]のallocとinitの動作に近いものが全自動で実行されてしまうような感じである。
<source lang="objc">
Parson* hage = [[Parson alloc] init];
</source>
<source lang="java">
匿名利用者