Класс VolatileCallSite
public non-sealed class VolatileCallSite extends CallSite
VolatileCallSite — это CallSite, цель которого ведёт себя как volatile-переменная. Инструкция invokedynamic, связанная с VolatileCallSite, немедленно видит изменения цели своей точки вызова, даже если обновление происходит в другом потоке. Такая тесная связь между потоками может привести к снижению производительности. В отличие от MutableCallSite, для volatile-точек вызова нет операции syncAll, поскольку каждая запись в volatile-переменную неявно синхронизируется с потоками-читателями.
В остальном VolatileCallSite взаимозаменяем с MutableCallSite.
- С версии:
- 1.7
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
VolatileCallSite |
Создаёт точку вызова с volatile-привязкой к её цели. |
VolatileCallSite |
Создаёт точку вызова с volatile-привязкой к её цели. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final MethodHandle |
dynamicInvoker() |
Создаёт дескриптор метода, эквивалентный инструкции invokedynamic, связанной с этой точкой вызова. |
final MethodHandle |
getTarget() |
Возвращает целевой метод точки вызова, который ведёт себя как поле VolatileCallSite с модификатором volatile. |
void |
setTarget |
Обновляет целевой метод этой точки вызова как volatile-переменную. |
Методы, объявленные в классе CallSite
type | Модификатор и тип | Метод | Описание |
|---|---|---|
MethodType |
type() |
Возвращает тип цели этой точки вызова. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Будит один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Будит все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до тех пор, пока он не будет разбужен, обычно посредством уведомления или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до тех пор, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время. |
final void |
wait |
Переводит текущий поток в состояние ожидания до тех пор, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время. |
Подробное описание конструкторов
VolatileCallSite
public VolatileCallSite(MethodType type)
IllegalStateException.- Параметры:
-
type— тип метода, который будет иметь эта точка вызова - Выбрасывает:
-
NullPointerException— если предложенный тип равен null
VolatileCallSite
public VolatileCallSite(MethodHandle target)
- Параметры:
-
target— дескриптор метода, который станет начальной целью точки вызова - Выбрасывает:
-
NullPointerException— если предложенная цель равна null
Подробное описание методов
getTarget
public final MethodHandle getTarget()
VolatileCallSite с модификатором volatile. Взаимодействие getTarget с памятью аналогично чтению из поля volatile.
В частности, текущий поток должен заново считывать цель из памяти и не должен пропустить недавнее обновление цели, выполненное другим потоком.
setTarget
public void setTarget(MethodHandle newTarget)
Взаимодействие с памятью аналогично записи в volatile-поле. В частности, гарантируется, что все потоки увидят обновлённую цель при следующем вызове getTarget.
- Определён в:
-
setTargetв классеCallSite - Параметры:
-
newTarget— новая цель - Выбрасывает:
-
NullPointerException— если новая предложенная цель равна null -
WrongMethodTypeException— если тип метода новой предложенной цели отличается от типа метода предыдущей цели - См. также:
dynamicInvoker
public final MethodHandle dynamicInvoker()
Этот метод эквивалентен следующему коду:
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, 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.