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