- - PR -
Singletonクラスについて
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-04-11 00:32
補足すると、例えばオブジェクトAをスレッド1とスレッド2で共有している状態で、 一、スレッド1がオブジェクトAのフィールドXの値を1に変更 二、スレッド2がオブジェクトAのフィールドXの値を2に変更 三、スレッド1がオブジェクトAのフィールドXの値を読み出す といった順序で処理が実行された場合、たとえXがatomicに操作可能なフィールドであっても (同期なしだと)三の操作の結果2が得られる保証はない(また逆に1が得られる保証もない) ということです。 (これはいわゆるrace conditionの問題とは別でJavaのメモリモデルに起因するものです) | ||||
|
投稿日時: 2003-04-11 10:45
みたらいなおゆき さん:
確かに、最低限volatileは必要ですね。 どうも、スレッドごとに持つ値のコピーのことを、Javaコンパイラが任意に行う最適化だと勘違いしていたようです。 | ||||
|
投稿日時: 2003-04-11 13:36
>確かに、最低限volatileは必要ですね。
常に最新情報が必要な場合は,だと思いますがね. もう一つ問題なのは,それを「同期」と呼ぶかということ. どちらかというと「非同期の処理」ではないですかね? | ||||
