synchronized/wait()/notify()/notifyAll()
Lockクラスのメソッドlock()/unlock()/newCondition()
とConditionで直接置き換えられましたawait()/signal()/signalAll()
。
これらにはいくつかの利点があります。まず、公平性ポリシーなどの追加のセマンティクス、および分散ロックなどの機能を許可します。複数のCondition
オブジェクトのサポートにより、はるかにきめ細かいシグナリングと、割り込みなしの待機およびある時間までの待機などが可能になります。
たとえば、リンクされたコードには、シグナリングに使用しようとする個別のオブジェクトがあります(関連するモニターが待機中に保持されないために失敗します)。これは、複数の条件を持つ単一のロックを使用することで直接置き換えることができます。
改善という点では、追加機能は価値があるかもしれません。Java5では、明示的なLock実装は実際にはJVMモニターよりも優れていますが、基本的には、JVMのDoug Leaのコードにニックを入れ、パフォーマンスはほぼ同等です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加