类 ScopedValue.Carrier

java.lang.Object
jdk.incubator.concurrent.ScopedValue.Carrier
封闭类:
ScopedValue<T>

public static final class ScopedValue.Carrier extends Object
作用域值(如 keys )到值的映射。

Carrier 用于累积映射,以便可以使用绑定到值的map中的所有作用域值执行操作(Runnable Callable )。以下示例运行一个操作,其中 k1 绑定(或反弹)到 v1k2 绑定(或反弹)到 v2

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

Carrier 是不可变的和线程安全的。 where 方法返回一个新的 Carrier 对象,它不会改变现有的映射。

除非另有说明,否则将 null 参数传递给此类中的方法将导致抛出 NullPointerException

自从:
20
  • 方法详情

    • where

      public <T> ScopedValue.Carrier  where(ScopedValue <T> key, T value)
      返回一个新的 Carrier,其中包含来自该运营商的映射以及从 keyvalue 的新映射。如果此运营商已经具有作用域值 key 的映射,那么它将映射到新的 value 。当前的载体是不可变的,所以它不会被这个方法改变。
      类型参数:
      T - 值的类型
      参数:
      key - ScopedValue
      value - 值,可以是 null
      返回:
      一个新的 Carrier,包含来自该运营商的映射以及新映射
    • get

      public <T> T get(ScopedValue <T> key)
      返回此map中 ScopedValue 的值。
      类型参数:
      T - 值的类型
      参数:
      key - ScopedValue
      返回:
      抛出:
      NoSuchElementException - 如果此map中不存在密钥
    • call

      public <R> R call(Callable <? extends R> op) throws Exception
      调用一个值返回操作,并将此map中的每个作用域值绑定到它在当前线程中的值。当操作完成时(正常或异常),map中的每个作用域值将恢复为未绑定状态,或恢复为当前线程中先前绑定时的先前值。

      作用域值旨在用于 structured manner 。如果 op 创建了一个 StructuredTaskScope 但没有创建 close 它,那么退出 op 会导致在动态范围内创建的每个 StructuredTaskScope 的底层结构被关闭。这可能需要阻塞,直到所有子线程都完成了它们的子任务。关闭是按照创建它们的相反顺序完成的。一旦关闭,StructureViolationException 就会被抛出。

      类型参数:
      R - 操作结果的类型
      参数:
      op - 要运行的操作
      返回:
      结果
      抛出:
      Exception - 如果 op 异常完成
      参见:
    • run

      public void run(Runnable  op)
      运行一个操作,此map中的每个作用域值都绑定到它在当前线程中的值。当操作完成时(正常或异常),map中的每个作用域值将恢复为未绑定状态,或恢复为当前线程中先前绑定时的先前值。

      作用域值旨在用于 structured manner 。如果 op 创建了一个 StructuredTaskScope 但没有创建 close 它,那么退出 op 会导致在动态范围内创建的每个 StructuredTaskScope 的底层结构被关闭。这可能需要阻塞,直到所有子线程都完成了它们的子任务。关闭是按照创建它们的相反顺序完成的。一旦关闭,StructureViolationException 就会被抛出。

      参数:
      op - 要运行的操作
      参见: