モジュール jdk.incubator.concurrent
パッケージ jdk.incubator.concurrent

クラスScopedValue.Carrier

java.lang.Object
jdk.incubator.concurrent.ScopedValue.Carrier
含まれているクラス:
ScopedValue<T>

public static final class ScopedValue.Carrier extends Object
「キー」のようなスコープ値の値へのマッピング。

Carrierを使用してマッピングを蓄積し、マッピング内のすべてのスコープ値を使用して操作(RunnableまたはCallable)を値にバインドして実行できるようにします。 次の例では、k1が(またはリ・バウンド)をv1にバインドし、k2が(またはリ・バウンド)をv2にバインドした操作を実行します。

    ScopedValue.where(k1, v1).where(k2, v2).run(() -> ... );

Carrierは不変でスレッド・セーフです。 whereメソッドは、新しいCarrierオブジェクトを返し、既存のマッピングを変更しません。

特に指定しないかぎり、このクラスのメソッドにnull引数を渡すと、NullPointerExceptionがスローされます。

導入されたバージョン:
20
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    <R> R
    call(Callable<? extends R> op)
    このマッピングの各スコープ値を使用して、現在のスレッドの値にバインドされた値を返す操作をコールします。
    <T> T
    get(ScopedValue<T> key)
    このマッピングのScopedValueの値を返します。
    void
    このマッピング内の各スコープ値を現在のスレッド内の値にバインドした操作を実行します。
    where(ScopedValue<T> key, T value)
    このキャリアからのマッピングに加えて、keyからvalueへの新しいマッピングを含む新しいCarrierを返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • メソッドの詳細

    • where

      public <T> ScopedValue.Carrier where(ScopedValue<T> key, T value)
      このキャリアからのマッピングに加えて、keyからvalueへの新しいマッピングを含む新しいCarrierを返します。 このキャリアにスコープ値keyのマッピングがすでにある場合は、新しいvalueにマップされます。 現在のキャリアは不変であるため、このメソッドでは変更されません。
      型パラメータ:
      T - 値の型
      パラメータ:
      key - ScopedValueキー
      value - 値はnullです
      戻り値:
      このキャリアからのマッピングと新しいマッピングを含む新しいCarrier
    • get

      public <T> T get(ScopedValue<T> key)
      このマッピングのScopedValueの値を返します。
      型パラメータ:
      T - 値の型
      パラメータ:
      key - ScopedValueキー
      戻り値:
      例外:
      NoSuchElementException - キーがこのマッピングに存在しない場合
    • call

      public <R> R call(Callable<? extends R> op) throws Exception
      このマッピングの各スコープ値を使用して、現在のスレッドの値にバインドされた値を返す操作をコールします。 操作が(通常または例外あり)を完了すると、マッピング内の各スコープ値は、現在のスレッドでバインドされていない値に戻されるか、以前バインドされた場合は以前の値に戻されます。

      スコープ値は、「構造化方式」で使用することを目的としています。 opによってStructuredTaskScopeが作成され、「閉じる」が作成されない場合、opを終了すると、動的スコープで作成された各StructuredTaskScopeの基礎となる構成がクローズされます。 すべての子スレッドがサブタスクを完了するまで、ブロックが必要になる場合があります。 クローズは、作成された順序とは逆の順序で実行されます。 クローズすると、StructureViolationExceptionがスローされます。

      型パラメータ:
      R - 操作の結果のタイプ
      パラメータ:
      op - 実行する操作
      戻り値:
      結果
      例外:
      Exception - opが例外ありで完了した場合
      関連項目:
    • run

      public void run(Runnable op)
      このマッピング内の各スコープ値を現在のスレッド内の値にバインドした操作を実行します。 操作が(通常または例外あり)を完了すると、マッピング内の各スコープ値は、現在のスレッドでバインドされていない値に戻されるか、以前バインドされた場合は以前の値に戻されます。

      スコープ値は、「構造化方式」で使用することを目的としています。 opによってStructuredTaskScopeが作成され、「閉じる」が作成されない場合、opを終了すると、動的スコープで作成された各StructuredTaskScopeの基礎となる構成がクローズされます。 すべての子スレッドがサブタスクを完了するまで、ブロックが必要になる場合があります。 クローズは、作成された順序とは逆の順序で実行されます。 クローズすると、StructureViolationExceptionがスローされます。

      パラメータ:
      op - 実行する操作
      関連項目: