Класс VolatileCallSite

public class VolatileCallSite
extends CallSite

Объект VolatileCallSite является CallSite, целевой метод которого ведет себя как переменная типа volatile. Инструкция invokedynamic, связанная с VolatileCallSite, видит обновления целевого метода вызова сразу же, даже если это обновление произошло в другом потоке. Взаимосвязь потоков может сказаться на производительности.

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

В остальных аспектах VolatileCallSite взаимозаменяем с MutableCallSite.

Since:
1.7
См. также:
MutableCallSite

Конструкторы

КонструкторОписание
VolatileCallSite​(MethodHandle target)

Создает вызов с volatile связью с его целевым методом.

VolatileCallSite​(MethodType type)

Создает вызов с volatile связью с его целевым методом.

Методы

Модификатор и типМетодОписание
MethodHandlegetTarget()

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

voidsetTarget​(MethodHandle newTarget)

Обновляет целевой метод этого вызова как volatile переменную.

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

dynamicInvoker, 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()

© 1993, 2020, 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/11/docs/api/java.base/java/lang/invoke/VolatileCallSite.html

Spec-Zone .ru
спецификации, руководства, описания, API