リエントラントロック

条件- ロックに条件を適用すると、ストリームへのアクセス管理を制御できるようになります。ロック条件は、 java.util.concurrent.locksConditionインターフェースのオブジェクトです。Conditionオブジェクト、多くの点で、前のトピックの 1 つで説明したObjectクラスwait/notify/notifyAll

Lock は、同期と比較してリソース/ブロックへのアクセスを制限する柔軟なアプローチを提供するロック フレームワークのインターフェイスです複数のロックを使用する場合、ロックの解除順序は任意であり、設定することもできます。ロックがすでに取得されている場合の状況に対処する可能性もあります。

ReentrantLock は、 Lockインターフェイス、 ReentrantLockクラスの実装の 1 つです。これにより、同じスレッドが以前にロック メソッドを呼び出したことがあったとしても、ロックを解放せずにそのロック メソッドを呼び出すことができます。

ReentrantLockクラスには、 Lockインターフェイスのメソッドに加えて、ファクトリ メソッドnewCondition()があります。このメソッドはオブジェクトを返します状態これにより、現在のスレッドを指定されたオブジェクトの待機セットに追加できます。状態

private final Lock R_LOCK = ReentrantLock();
R_LOCK.lock();
try {
   //some action happens here
} finally {
   R_LOCK.unlock();
}

ReadWriteLock は、読み取り/書き込みロックを作成するためのインターフェイスです。ロックは、システムの読み取りが多く書き込みが少ない場合に非常に役立ちます。

ReentrantReadWriteLock - マルチスレッド サービスとキャッシュで使用され、同期ブロックと比較してパフォーマンスが大幅に向上します。実際、このクラスは 2 つの相互に排他的なモードで動作します。つまり、多くのリーダーが並行してデータを読み取るときと、1 人のライターだけがデータを書き込むときです。

ReentrantReadWriteLock.ReadLock - readWriteLock.readLock() 経由で取得されるリーダーの読み取りロック。

ReentrantReadWriteLock.WriteLock - readWriteLock.writeLock() を介して取得される、ライ​​ターの書き込みロック。

シンクロナイザー

AbstractOwnableSynchronizer は、同期メカニズムの構築を担当する基本クラスです。データを操作できる排他的なストリームを記憶し、読み取るためのゲッター/セッターが含まれています。

AbstractQueuedSynchronizer は、FutureTask、CountDownLatch、Semaphore、ReentrantLock、ReentrantReadWriteLock の同期メカニズムの基本クラスです。これは、単一のアトミックな int 値に依存する新しい同期メカニズムを作成するときにも使用されます。

AbstractQueuedLongSynchronizer は、アトミックな Long 値をサポートするAbstractQueuedSynchronizerのバリアントです