Spec-Zone.ru › OpenJDK 27

Класс ScopedValue.Carrier

java.lang.Object
java.lang.ScopedValue.Carrier
Внешний класс:
ScopedValue<T>
public static final class ScopedValue.Carrier extends Object
Отображение ограниченных значений, где ключи сопоставлены со значениями.

Carrier используется для накопления отображений, чтобы операция (Runnable или ScopedValue.CallableOp) могла выполняться, когда всем ограниченным значениям в отображении сопоставлены значения. В следующем примере выполняется операция, в которой k1 сопоставлено (или повторно сопоставлено) с v1, а k2 сопоставлено (или повторно сопоставлено) с v2.

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

Carrier является неизменяемым и потокобезопасным. Метод where возвращает новый объект Carrier, а не изменяет существующее отображение.

Если не указано иное, передача аргумента null методу этого класса приводит к выбрасыванию исключения NullPointerException.

С версии:
25

Краткое описание методов

Модификатор и тип Метод Описание
<R, X extends Throwable>
R
call(ScopedValue.CallableOp<? extends R, X> op)
Вызывает операцию, возвращающую значение, при этом каждому ограниченному значению в этом отображении сопоставляется его значение в текущем потоке.
<T> T get(ScopedValue<T> key)
Возвращает значение ScopedValue из этого отображения.
void run(Runnable op)
Выполняет операцию, при этом каждому ограниченному значению в этом отображении сопоставляется его значение в текущем потоке.
<T> ScopedValue.Carrier where(ScopedValue<T> key, T value)
Возвращает новый объект Carrier, содержащий отображения из этого носителя и новое отображение от key к value.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения определенного промежутка реального времени.

Подробное описание методов

where

public <T> ScopedValue.Carrier where(ScopedValue<T> key, T value)
Возвращает новый объект Carrier, содержащий отображения из этого носителя и новое отображение от key к value. Если в этом носителе уже имеется отображение для ограниченного значения key, ему будет сопоставлено новое value. Текущий носитель неизменяем, поэтому этот метод его не изменяет.
Параметры типа:
T — тип значения
Параметры:
key — ключ ScopedValue
value — значение; может быть null
Возвращает:
новый объект Carrier, содержащий отображения из этого носителя и новое отображение

get

public <T> T get(ScopedValue<T> key)
Возвращает значение ScopedValue из этого отображения.
Параметры типа:
T — тип значения
Параметры:
key — ключ ScopedValue
Возвращает:
значение
Выбрасывает:
NoSuchElementException — если ключ отсутствует в этом отображении

call

public <R, X extends Throwable> R call(ScopedValue.CallableOp<? extends R, X> op) throws X
Вызывает операцию, возвращающую значение, при этом каждому ограниченному значению в этом отображении сопоставляется его значение в текущем потоке. После завершения операции (нормального или с исключением) каждое ограниченное значение в отображении снова станет несвязанным либо примет предыдущее значение, если оно было связано ранее, в текущем потоке. Если op завершается с исключением, оно передается этим методом.

Предполагается, что ограниченные значения используются структурированным образом. Если код, вызванный операцией прямо или косвенно, создает StructuredTaskScopeПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР, но не вызывает для него закрытиеПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР, это обнаруживается как нарушение структуры при завершении операции (нормальном или с исключением). В этом случае базовая конструкция StructuredTaskScope закрывается, и выбрасывается StructureViolationExceptionПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР.

Параметры типа:
R — тип результата операции
X — тип исключения, выбрасываемого операцией
Параметры:
op — выполняемая операция
Возвращает:
результат
Выбрасывает:
StructureViolationExceptionPREVIEW — если обнаружено нарушение структуры
X — если op завершается с исключением

run

public void run(Runnable op)
Выполняет операцию, при этом каждому ограниченному значению в этом отображении сопоставляется его значение в текущем потоке. После завершения операции (нормального или с исключением) каждое ограниченное значение в отображении снова станет несвязанным либо примет предыдущее значение, если оно было связано ранее, в текущем потоке. Если op завершается с исключением, оно передается этим методом.

Предполагается, что ограниченные значения используются структурированным образом. Если код, вызванный операцией прямо или косвенно, создает StructuredTaskScopeПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР, но не вызывает для него закрытиеПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР, это обнаруживается как нарушение структуры при завершении операции (нормальном или с исключением). В этом случае базовая конструкция StructuredTaskScope закрывается, и выбрасывается StructureViolationExceptionПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР.

Параметры:
op — выполняемая операция
Выбрасывает:
StructureViolationExceptionPREVIEW — если обнаружено нарушение структуры

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API