モジュール java.base

パッケージ java.util.concurrent.locks

組込みの同期および監視から区別された状態をロックおよび待機するためのフレームワークを提供するインタフェースおよびクラス。 このフレームワークを使用すると、構文は扱いにくくなりますが、ロックおよび状態をより柔軟に使用できるようになります。

Lockインタフェースがサポートするロック制御は、セマンティックス(再入可能、公平など)により異なります。また、「hand-over-hand」や「lock reordering」アルゴリズムを含む非ブロック構造のコンテキストで使用できます。 主な実装は、ReentrantLockです。

同様に、ReadWriteLockインタフェースは、リーダー間では共有可能であるが、ライターには排他的に設定可能なロックを定義します。 提供されるのは、単一の実装ReentrantReadWriteLockだけです。これは、この実装だけで標準的な使用コンテキストの大半に対応できるためです。 ただし、プログラマは、独自の実装を作成して非標準の要件に対応できます。

Conditionインタフェースは、Lockに関連付けることのできる状態変数を記述します。 これらは、使用法の点で、Object.waitを使用してアクセスされる暗黙の監視に似ていますが、拡張された機能を提供します。 特に、複数のConditionオブジェクトを1つのLockに関連付けることができます。 互換性の問題を回避するために、Conditionメソッドの名前は対応するObjectバージョンとは異なるものになっています。

AbstractQueuedSynchronizerクラスは、ブロックされたスレッドのキューイングに依存するロックやその他のシンクロナイザを定義するために役立つスーパークラスとして機能します。 AbstractQueuedLongSynchronizerクラスは同じ機能を提供しますが、64ビットの同期状態までサポートを拡張しています。 どちらもAbstractOwnableSynchronizerクラスを拡張します。このクラスは、排他的な同期を現在保持しているスレッドを記録できる単純なクラスです。 LockSupportクラスは、カスタマイズされた独自のロック・クラスを実装している開発者に役立つ、より低レベルのブロックおよびブロック解除のサポートを提供します。

導入されたバージョン:
1.5