読み取り専用操作用および書き込み用の、関連するロックのペアを制御します。読み込みロックは、ライターが存在しないかぎり、複数のリーダスレッドが同時に保持できます。書き込みロックは排他的です。書き込みロックを使用すると、相互排他ロックを使用する場合よりも広範な並行性を共有データへのアクセスに持たせることができます。データを同時に読み込むことができるという事実を利用します。書き込みロックの使用で許可される並行性を向上させると、相互排他ロックを使用する場合と比べてパフォーマンスが向上します。実際には、並行性向上が十分に実現されるのは、複数のプロセッサ上で使用され、共有データのアクセスパターンが適している場合だけです。読み取り−書き込みロックにより相互排他ロックよりもパフォーマンスが向上するかどうかは、データ変更に対するデータ読み込みの頻度、読み取りおよび書き込みの持続期間、およびデータの競合、つまり同時にデータを読み取るまたは書き込むスレッドの数に依存します。頻繁に検索されるコレクションは、読み取り−書き込みロックの理想的な候補になります。更新が頻繁に行われる場合、データの時間の大半は排他的ロックに費やされるため、並行性は向上するとしてもごくわずかです。より実行コストが支配されてしまう可能性があります。多数の読み取り−書き込みロック実装が少ないコードセクションですべてのスレッドを直列化する場合は、特にこのことが当てはまります。結局のところ、読み込み−書き込みロックが使用するアプリケーションに適しているかどうかを調べるには、プロファイリングと計測を実行するしかありません。読み込み−書き込みロックの基本操作は複雑ではありませんが、実装で行う必要のあるポリシー上の決定が多数存在します。これらの決定は、指定されたアプリケーションでの読み込み−書き込みロックの効果性に影響を与える場合があります。これらのポリシーの例を、次に示します。ライターが書き込みロックを解放したときに、読み込みロックまたは書き込みロックを許可するかどうか、いつリーダおよびライターの両方を待機させるかを決定する。ライターは短期的で使用頻度も少ないことが期待されるため、ライター優先は一般的である。リーダが予想どおり頻繁に実行されて長時間の場合、書き込みの遅延が大きくなるため、リーダ優先は一般的ではない。均等、つまり「順序」実装も可能である。リーダがアクティブでライターが待機中に、読み込みロックを要求したリーダが読み取りロックを許可されるかどうかを判別する。ライターに対する優先が同時性の可能性を低下させる可能性があるのに対し、リーダに対する優先はライターを無制限に遅らせる可能性がある。介入するライターを許可することなく、書き込みロックを読み込みロックに降格可能か。読み込みロックを、待機中の他のリーダやライターよりも優先して書き込みロックに昇格可能か。指定されたアプリケーション実装の適性を評価する際、これらすべてを考慮する必要があります。ReentrantLockメソッドの概要LockreadLock()読み込みに使用するロックを返します。LockwriteLock()書き込みに使用するロックを返します。readLock()読み込みに使用するロックを返します。writeLock()書き込みに使用するロックを返します。開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。