インターフェース Lock
public interface Lock
Lock
は、synchronized
メソッドおよび Lock
SE を使用して取得できるものよりも広範なロック操作を提供します。これにより、より柔軟な構造化と改善された使用モデルが可能になります。 このロックの抽象化は lock utilities
SE の拡張であり、機能とリソースの試行を容易にすることを目的としています。
ReentrantLock backend = new ReentrantLock(); Lock lock = Lock.of(backend); lock.executeWithoutResult(() -> { // callback without returning a result }); lock.execute(() -> { // callback returning a result return …; });
- 導入:
- 3.2
- 作成者:
- Mark Paluch
ネストされたクラスのサマリー
メソッドのサマリー
修飾子と型メソッド説明default <T> T
execute
(SupplierSE<T> action) ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行し、その結果を返します。default void
executeWithoutResult
(RunnableSE action) ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行します。lock()
ロックを取得します。現在のスレッドが中断されない限り、ロックを取得します。static Lock
指定されたdelegate
SE に対して新しいLock
アダプターを作成します。
メソッドの詳細
of
指定されたdelegate
SE に対して新しいLock
アダプターを作成します。- パラメーター:
delegate
- null であってはなりません。- 戻り値:
- 新しい
Lock
アダプター。
lock
Lock.AcquiredLock lock()ロックを取得します。ロックが利用できない場合、現在のスレッドはスレッドスケジューリングの目的で無効になり、ロックが取得されるまで休止状態になります。
- 関連事項:
lockInterruptibly
現在のスレッドが中断されない限り、ロックを取得します。利用可能な場合はロックを取得し、すぐに返します。
ロックが利用できない場合、現在のスレッドはスレッドスケジューリングの目的で無効になり、次の 2 つのいずれかが発生するまで休止状態になります。
- ロックは現在のスレッドによって取得されます。または
- 他のスレッドが現在のスレッドに割り込み、ロック取得の割り込みがサポートされています。
現在のスレッドの場合:
- このメソッドへの開始時に割り込みステータスが設定されます。または
- ロックの取得中に中断され、ロック取得の中断がサポートされます。
InterruptedException
SE がスローされ、現在のスレッドの割り込みステータスがクリアされます。execute
ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行し、その結果を返します。action
は、ロックが取得された場合にのみ実行されます。- 型パラメーター:
T
- 結果の型。- パラメーター:
action
- 実行するアクション。- 戻り値:
- 行動の結果。
- 例外:
RuntimeExceptionSE
- アクションによって投げられた場合
executeWithoutResult
ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行します。action
は、ロックが取得された場合にのみ実行されます。- パラメーター:
action
- 実行するアクション。- 例外:
RuntimeExceptionSE
- アクションによって投げられた場合。