1

AtomicBoolean次のように起動/シャットダウンの同期に を使用すると効果がないと言う友人がいます。

 public void startup() {
    if (started.compareAndSet(false, true)) {
                 ... startup code
         }
 } 

彼はAtomicBoolean、スレッドセーフであるためにはループの内側にいる必要があると言います。AtomicBooleanループの外で使用できないのはなぜですか? この背後にある理論的根拠は何ですか?

が必要です

4

2 に答える 2

0

もう少しコンテキストを提供したい場合があります。たとえば、起動コードがいくつかの状態とスレッドを初期化し、比較とスワップに失敗してからその状態を使用しようとすると、競合が発生する可能性があります。初期化が完了するまで他のスレッドを強制的に待機させるものは何もありません。

于 2013-09-03T08:40:14.227 に答える