の操作に応じて、nullからnull以外、前後に変化するオブジェクトのフィールドを想定します。スレッド。NULLでない場合は値を使用し、それ以外の場合はループしてループします。
2つ目のスレッドは、null以外の値を保持するときはいつでも何らかのアクションを取る必要があります。特に、2番目のスレッドは、値がnull以外に切り替わるまで待機します。それが待たされていない場合、私はそれがその手に非nullを持っていることを確かめたい。
これは、キューの状況のようには見えません.2番目のスレッドが要素を取り去ることはないため、利用可能な場合にのみ使用します。
また、セマフォの使用には適合しません。なぜなら、再び.acquire()
が許可されないからです。
代わりに、それは組み込みの待機との比較と取得を思い出させますが、これは存在しないようです。
java.util.concurrent
にはこれが定義されていますが、わかりにくいデバイスがありますか?これはどうすればできますか?
Thisは類似していますが、受け入れられた回答またはここで役立つ回答はありません。
アプローチには根本的な欠陥があります。レイジースレッドがフィールドの変更の間に起動することを保証できないため、すべてのイベントを捕捉できない可能性があります。 – Malt
これは基本的な欠陥ではなく、意図された動作です。だからこそ、私はこう書いています。「もしそれが**起これば**、ヌル値を保持する」。そうでない場合、これは重要ではありません。 – Harald
複数のスレッドが値を設定しますか? – erickson