「ダブル・チェック・ロッキング」の版間の差分
imported>Administrator |
imported>Administrator |
||
| 91行目: | 91行目: | ||
# 2行目の初めて使うときにコンストラクタが実行される。 | # 2行目の初めて使うときにコンストラクタが実行される。 | ||
#: [[コンストラクタ]]が実行されるタイミングは、オリジナル(newを実行した[[スレッド]]の持つ)インスタンスに対して外部から[[メンバー関数]]や[[メンバー変数]]に初回アクセスがあったときとなる。これを[[遅延初期化]](lazy initialization)という。これによりhage[[変数]]自体は[[null]]ではないので後続スレッドはコンストラクタを実行していない不完全な[[インスタンス]]の[[参照]]を取得できてしまう。 | #: [[コンストラクタ]]が実行されるタイミングは、オリジナル(newを実行した[[スレッド]]の持つ)インスタンスに対して外部から[[メンバー関数]]や[[メンバー変数]]に初回アクセスがあったときとなる。これを[[遅延初期化]](lazy initialization)という。これによりhage[[変数]]自体は[[null]]ではないので後続スレッドはコンストラクタを実行していない不完全な[[インスタンス]]の[[参照]]を取得できてしまう。 | ||
[[Objective-C]]のallocとinitの動作に近いものが全自動で実行されてしまうような感じである。 | |||
<source lang="objc"> | |||
Parson* hage = [[Parson alloc] init]; | |||
</source> | |||
<source lang="java"> | <source lang="java"> | ||