Класс ChainedCallSite

Все реализованные интерфейсы:
RelinkableCallSite
public class ChainedCallSite
extends AbstractRelinkableCallSite

Место вызова, которое можно переподключать и реализует стратегию полиморфного кэширования встраиваемых вызовов. Оно запоминает до 8 GuardedInvocation, с которыми было связано, и при каждом запросе на переподключение строит каскадную цепочку обработчиков методов, где один вызов обращается к следующему. Количество запоминаемых вызовов можно настроить, переопределив getMaxChainLength() в подклассе. Когда это место вызова переподключается с новым вызовом, а длина цепочки уже максимальна, оно отбросит самый старый вызов. Вызовы с недействительными точками переключения и вызовы, для которых вызывающее исключение было сделано недействительным, удаляются из цепочки незамедлительно. Вызовы никогда не переупорядочиваются; самый недавно связанный обработчик методов всегда находится в начале цепочки, а наименее недавно связанный — в конце. К месту вызова можно безопасно переподключаться на нескольких потоках одновременно. Конфликты в процессе связывания разрешаются путем удаления GuardedInvocation, созданного в проигравшем потоке, без его включения в цепочку, поэтому это может привести к многократному связыванию для одних и тех же аргументов.

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

Конструктор Описание
ChainedCallSite​(CallSiteDescriptor descriptor)

Создает новое место вызова в цепочке.

Методы

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

Максимальное количество обработчиков методов в цепочке.

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

getTarget, setTarget, syncAll

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

dynamicInvoker, type

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

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

Методы, унаследованные от интерфейса jdk.dynalink.RelinkableCallSite

getDescriptor, initialize, relink, resetAndRelink

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

ChainedCallSite

public ChainedCallSite(CallSiteDescriptor descriptor)

Создает новое место вызова в цепочке.

Параметры:
descriptor - описание места вызова.

Методы

getMaxChainLength

protected int getMaxChainLength()

Максимальное количество обработчиков методов в цепочке. По умолчанию 8. Можно переопределить в подклассе, если нужно изменить значение.

Возвращает:
максимальное количество обработчиков методов в цепочке. Возвращаемое значение проверяется, и если переопределение возвращает значение меньше 1, будет брошено исключение RuntimeException.

© 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/jdk.dynalink/jdk/dynalink/support/ChainedCallSite.html

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