2011-07-09 8 views
10

ReentrantReadWriteLockの場合は、と比べて、Javaのマルチスレッド環境でキーワードを同期させましたか?ReentrantReadWriteLock対同期

Javaで同期ReentrantReadWriteLockを使用することの利点は何ですか?

どのような例も(Javaの場合)できますか?

ありがとうございます!

+1

このスレッドを読んで、あなたの質問に言い方をする方が良いかどうかを確認することができます。どのようにしているか、コードがオブジェクト/変数にアクセスしているかによって異なります。 http://forum.ragezone.com/f683/synchronised-vs-reentrantlocks-696540/ –

答えて

18

同期化は、一度に1つのスレッドで許可されます。

読み取り/書き込みロックでは、複数のリーダーを同時に使用できますが、ライターが存在しない場合に限ります。したがって、いくつかの使用シナリオでは、読者の集団が一緒に進めるため、より良い並行性が得られます。

Java API documentationは、ライターよりも読者が多いと予想されるコレクションクラスの例を示しています。

11

locking article by Brianは、それぞれのアプローチの長所と短所を詳細に説明しています。

ロックフレームワークは が同期 だけでなく、競合の下で優れたパフォーマンスを提供 の実装で提供されていない多くの機能を提供しています同期のための互換性 交換、です。しかし、 これらの明白な存在の存在は、 が常に にReentrantLockを同期するのに十分な理由ではありません。代わりに、 にReentrantLockの能力が必要かどうかに基づいて、 の決定を下します。 大多数のケースでは、 非同期はちょうど で動作し、すべてのJVMで動作します。 は広い範囲の開発者によって理解され、 はエラーを起こしにくいものです。 あなたが本当にそれを必要とするときのためのロックを保存してください。その場合、 あなたはあなたがそれを持ってうれしいでしょう。

関連する問題