インターフェース 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
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    インターフェース
    説明
    static interface
    取得したロックを try-with-resources で使用すると、解放が容易になります。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    default <T> T
    execute(SupplierSE<T> action)
    ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行し、その結果を返します。
    default void
    ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行します。
    ロックを取得します。
    現在のスレッドが中断されない限り、ロックを取得します。
    static Lock
    of(LockSE delegate)
    指定された delegateSE に対して新しい Lock アダプターを作成します。
  • メソッドの詳細

    • of

      static Lock of(LockSE delegate)
      指定された delegateSE に対して新しい Lock アダプターを作成します。
      パラメーター:
      delegate - null であってはなりません。
      戻り値:
      新しい Lock アダプター。
    • lock

      ロックを取得します。

      ロックが利用できない場合、現在のスレッドはスレッドスケジューリングの目的で無効になり、ロックが取得されるまで休止状態になります。

      関連事項:
    • lockInterruptibly

      Lock.AcquiredLock lockInterruptibly() throws InterruptedExceptionSE
      現在のスレッドが中断されない限り、ロックを取得します。

      利用可能な場合はロックを取得し、すぐに返します。

      ロックが利用できない場合、現在のスレッドはスレッドスケジューリングの目的で無効になり、次の 2 つのいずれかが発生するまで休止状態になります。

      • ロックは現在のスレッドによって取得されます。または
      • 他のスレッドが現在のスレッドに割り込み、ロック取得の割り込みがサポートされています。

      現在のスレッドの場合:

      • このメソッドへの開始時に割り込みステータスが設定されます。または
      • ロックの取得中に中断され、ロック取得の中断がサポートされます。
      その後、InterruptedExceptionSE がスローされ、現在のスレッドの割り込みステータスがクリアされます。
      例外:
      InterruptedExceptionSE
    • execute

      default <T> T execute(SupplierSE<T> action)
      ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行し、その結果を返します。action は、ロックが取得された場合にのみ実行されます。
      型パラメーター:
      T - 結果の型。
      パラメーター:
      action - 実行するアクション。
      戻り値:
      行動の結果。
      例外:
      RuntimeExceptionSE - アクションによって投げられた場合
    • executeWithoutResult

      default void executeWithoutResult(RunnableSE action)
      ロックで保護された指定されたコールバックオブジェクトで指定されたアクションを実行します。action は、ロックが取得された場合にのみ実行されます。
      パラメーター:
      action - 実行するアクション。
      例外:
      RuntimeExceptionSE - アクションによって投げられた場合。