Класс ChainedCallSite
- java.lang.Object
-
- java.lang.invoke.CallSite
-
- java.lang.invoke.MutableCallSite
-
- jdk.dynalink.support.AbstractRelinkableCallSite
-
- jdk.dynalink.support.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