Spec-Zone.ru › OpenJDK 21

Класс VolatileCallSite

java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.VolatileCallSite
public non-sealed class VolatileCallSite extends CallSite
Место вызова VolatileCallSite — это CallSite, целевой объект которого ведет себя как переменная типа volatile. Инструкция invokedynamic , связанная с местом вызова VolatileCallSite, мгновенно видит обновления целевого объекта места вызова, даже если это обновление происходит в другом потоке. Могут возникнуть накладные расходы на производительность из-за такой тесной связи между потоками.

В отличие от MutableCallSite, для мест вызова volatile нет операции syncAll, так как каждое запись в переменную volatile неявно синхронизируется с потоками-читателями.

В других аспектах место вызова VolatileCallSite взаимозаменяемо с MutableCallSite.

Since:
1.7
See Also:
  • MutableCallSite

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

Конструктор Описание
VolatileCallSite(MethodHandle target)
Создаёт место вызова со связью volatile с его целевым объектом.
VolatileCallSite(MethodType type)
Создаёт место вызова со связью volatile с его целевым объектом.

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

Модификатор и тип Метод Описание
final MethodHandle dynamicInvoker()
Возвращает метод-обработчик, эквивалентный инструкции invokedynamic, которая была связана с этим местом вызова.
final MethodHandle getTarget()
Возвращает целевой метод места вызова, который ведет себя как поле volatile объекта VolatileCallSite.
void setTarget(MethodHandle newTarget)
Обновляет целевой метод этого места вызова как переменную volatile.

Методы, унаследованные от класса java.lang.invoke.CallSite

type

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

VolatileCallSite

public VolatileCallSite(MethodType type)
Создаёт место вызова со связью volatile с его целевым объектом. Начальный целевой объект устанавливается в метод-обработчик указанного типа, который при вызове выбросит IllegalStateException.
Параметры:
type - тип метода, который будет иметь это место вызова
Исключения:
NullPointerException - если предложенный тип равен null

VolatileCallSite

public VolatileCallSite(MethodHandle target)
Создаёт место вызова со связью volatile с его целевым объектом. Целевой объект устанавливается в заданное значение.
Параметры:
target - метод-обработчик, который будет являться начальным целевым объектом места вызова
Исключения:
NullPointerException - если предложенный целевой объект равен null

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

getTarget

public final MethodHandle getTarget()
Возвращает целевой метод места вызова, который ведет себя как поле volatile объекта VolatileCallSite.

Взаимодействие места вызова getTarget с памятью аналогично чтению из поля типа volatile.

В частности, текущий поток должен выполнить новое чтение целевого объекта из памяти и не должен пропустить недавнее обновление целевого объекта другим потоком.

Унаследованно от:
getTarget в классе CallSite
Возвращает:
состояние связи этого места вызова, метод-обработчик, который может меняться со временем
См. также:
  • setTarget(java.lang.invoke.MethodHandle)

setTarget

public void setTarget(MethodHandle newTarget)
Обновляет целевой метод этого места вызова как переменную volatile. Тип нового целевого объекта должен совпадать с типом старого целевого объекта.

Взаимодействие с памятью аналогично записи в поле типа volatile. В частности, любой поток гарантированно увидит обновленный целевой объект при следующем вызове getTarget.

Унаследованно от:
setTarget в классе CallSite
Параметры:
newTarget - новый целевой объект
Исключения:
NullPointerException - если предложенный новый целевой объект равен null
WrongMethodTypeException - если у предложенного нового целевого объекта тип метода отличается от предыдущего целевого объекта
См. также:
  • getTarget()

dynamicInvoker

public final MethodHandle dynamicInvoker()
Возвращает метод-обработчик, эквивалентный инструкции invokedynamic, которая была связана с этим местом вызова.

Этот метод эквивалентен следующему коду:


 MethodHandle getTarget, invoker, result;
 getTarget = MethodHandles.publicLookup().bind(this, "getTarget", MethodType.methodType(MethodHandle.class));
 invoker = MethodHandles.exactInvoker(this.type());
 result = MethodHandles.foldArguments(invoker, getTarget)
 
Унаследованно от:
dynamicInvoker в классе CallSite
Возвращает:
метод-обработчик, который всегда вызывает текущий целевой объект этого места вызова

© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/invoke/VolatileCallSite.html

Spec-Zone.ru

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