Spec-Zone.ru › OpenJDK 27

Интерфейс EventRequest

Все суперинтерфейсы:
Mirror
Все известные подинтерфейсы:
AccessWatchpointRequest, BreakpointRequest, ClassPrepareRequest, ClassUnloadRequest, ExceptionRequest, MethodEntryRequest, MethodExitRequest, ModificationWatchpointRequest, MonitorContendedEnteredRequest, MonitorContendedEnterRequest, MonitorWaitedRequest, MonitorWaitRequest, StepRequest, ThreadDeathRequest, ThreadStartRequest, VMDeathRequest, WatchpointRequest
public interface EventRequest extends Mirror
Представляет запрос на уведомление о событии. Примеры: BreakpointRequest и ExceptionRequest. Когда происходит событие, для которого существует включённый запрос, EventSet помещается в EventQueue. Управление набором существующих запросов событий выполняет EventRequestManager.

Количество событий, генерируемых для запроса события, можно контролировать с помощью фильтров. Фильтры задают дополнительные условия, которым должно удовлетворять событие, прежде чем оно будет помещено в очередь событий. Можно использовать несколько фильтров, вызывая методы добавления фильтров, например ExceptionRequest.addClassFilter(java.lang.String classPattern). Фильтры добавляются к событию по одному, только пока событие отключено. Несколько фильтров применяются как отсечение по И в порядке их добавления к запросу. В очередь событий помещаются только события, удовлетворяющие всем фильтрам.

Доступный набор фильтров зависит от запроса события. Примеры фильтров:

  • Фильтры потоков позволяют контролировать, для каких потоков генерируются события.
  • Фильтры классов позволяют контролировать класс, в котором происходит событие.
  • Фильтры экземпляров позволяют контролировать экземпляр, в котором происходит событие.
  • Фильтры количества позволяют контролировать число сообщений о событии.
Фильтры могут значительно повысить производительность отладчика, уменьшая объём событий, передаваемых от целевой виртуальной машины виртуальной машине отладчика.

Любой метод в EventRequest, принимающий EventRequest в качестве параметра, может выбросить VMDisconnectedException, если целевая виртуальная машина отключена и VMDisconnectEvent уже доступно или станет доступно для чтения из EventQueue.

Любой метод в EventRequest, принимающий EventRequest в качестве параметра, может выбросить VMOutOfMemoryException, если в целевой виртуальной машине закончилась память.

Начиная с версии:
1.3
См. также:
  • BreakpointEvent
  • EventQueue
  • EventRequestManager

Краткое описание полей

Модификатор и тип Поле Описание
static final int SUSPEND_ALL
Приостановить все потоки при возникновении события
static final int SUSPEND_EVENT_THREAD
Приостановить только поток, вызвавший событие, при его возникновении
static final int SUSPEND_NONE
Не приостанавливать потоки при возникновении события

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

Модификатор и тип Метод Описание
void addCountFilter(int count)
Ограничивает число сообщений о запрошенном событии: оно будет выдано не более одного раза после заданного количества наступлений.
void disable()
То же, что и setEnabled(false).
void enable()
То же, что и setEnabled(true).
Object getProperty(Object key)
Возвращает значение свойства с указанным ключом.
boolean isEnabled()
Определяет, включён ли в данный момент этот запрос события.
void putProperty(Object key, Object value)
Добавляет к этому запросу произвольное свойство «ключ/значение».
void setEnabled(boolean val)
Включает или отключает этот запрос события.
void setSuspendPolicy(int policy)
Определяет, какие потоки приостановить при возникновении запрошенного события в целевой виртуальной машине.
int suspendPolicy()
Возвращает значение, описывающее, какие потоки приостановить при возникновении запрошенного события в целевой виртуальной машине.

Методы, объявленные в интерфейсе Mirror

toString, virtualMachine
Модификатор и тип Метод Описание
String toString()
Возвращает строку с описанием данного зеркала
VirtualMachine virtualMachine()
Возвращает виртуальную машину, которой принадлежит данное зеркало.

Подробное описание полей

SUSPEND_NONE

static final int SUSPEND_NONE
Не приостанавливать потоки при возникновении события
См. также:
  • Значения константных полей

SUSPEND_EVENT_THREAD

static final int SUSPEND_EVENT_THREAD
Приостановить только поток, вызвавший событие, при его возникновении
См. также:
  • Значения константных полей

SUSPEND_ALL

static final int SUSPEND_ALL
Приостановить все потоки при возникновении события
См. также:
  • Значения константных полей

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

isEnabled

boolean isEnabled()
Определяет, включён ли в данный момент этот запрос события.
Возвращает:
true, если включён; в противном случае — false.

setEnabled

void setEnabled(boolean val)
Включает или отключает этот запрос события. Пока запрос события отключён, он игнорируется, и целевая виртуальная машина не приостанавливается, если один из её потоков достигает точки, соответствующей запросу. Отключённые запросы событий продолжают существовать и включаются в списки запросов событий, например EventRequestManager.breakpointRequests().
Параметры:
val — true, если запрос события нужно включить; в противном случае — false.
Выбрасывает:
InvalidRequestStateException — если этот запрос был удалён.
IllegalThreadStateException — если это StepRequest, val имеет значение true, а указанный в запросе поток завершился или ещё не запущен.

enable

void enable()
То же, что и setEnabled(true).
Выбрасывает:
InvalidRequestStateException — если этот запрос был удалён.
IllegalThreadStateException — если это StepRequest, а указанный в запросе поток завершился или ещё не запущен.

disable

void disable()
То же, что и setEnabled(false).
Выбрасывает:
InvalidRequestStateException — если этот запрос был удалён.

addCountFilter

void addCountFilter(int count)
Ограничивает число сообщений о запрошенном событии: оно будет выдано не более одного раза после заданного количества наступлений. Событие не сообщается при первых count - 1 срабатываниях этого фильтра. Чтобы запросить однократное событие, вызовите этот метод со значением count, равным 1.

Когда значение счётчика достигает 0, применяются все последующие фильтры этого запроса. Если ни один из этих фильтров не подавляет событие, о нём сообщается. В противном случае событие не сообщается. В любом случае последующие события для этого запроса больше не сообщаются.

Параметры:
count — число наступлений до генерации события.
Выбрасывает:
InvalidRequestStateException — если этот запрос в данный момент включён или был удалён. Фильтры можно добавлять только к отключённым запросам.
IllegalArgumentException — если count меньше единицы.

setSuspendPolicy

void setSuspendPolicy(int policy)
Определяет, какие потоки приостановить при возникновении запрошенного события в целевой виртуальной машине. Используйте SUSPEND_ALL, чтобы приостановить все потоки целевой виртуальной машины (это значение используется по умолчанию). Используйте SUSPEND_EVENT_THREAD, чтобы приостановить только поток, вызвавший событие. Используйте SUSPEND_NONE, чтобы не приостанавливать потоки.

Приостановка потоков посредством событий работает так же, как явно запрошенная приостановка. Подробности см. в описаниях ThreadReference.suspend() и VirtualMachine.suspend().

Параметры:
policy — выбранная политика приостановки.
Выбрасывает:
InvalidRequestStateException — если этот запрос в данный момент включён или был удалён. Политику приостановки можно задавать только для отключённых запросов.
IllegalArgumentException — если аргумент политики содержит недопустимое значение.

suspendPolicy

int suspendPolicy()
Возвращает значение, описывающее, какие потоки приостановить при возникновении запрошенного события в целевой виртуальной машине. Возвращаемое значение — SUSPEND_ALL, SUSPEND_EVENT_THREAD или SUSPEND_NONE.
Возвращает:
текущий режим приостановки для этого запроса

putProperty

void putProperty(Object key, Object value)
Добавляет к этому запросу произвольное свойство «ключ/значение». Клиент JDI может использовать это свойство, чтобы связать с запросом информацию приложения; заданные клиентом свойства не используются JDI внутри.

Методы get/putProperty предоставляют доступ к небольшой карте, отдельной для каждого экземпляра. Её не следует путать с Properties.

Если значение равно null, этот метод удаляет свойство.

См. также:
  • getProperty(Object)

getProperty

Object getProperty(Object key)
Возвращает значение свойства с указанным ключом. Ненулевое значение возвращается только для свойств, добавленных с помощью putProperty(Object, Object).
Возвращает:
значение этого свойства или null
См. также:
  • putProperty(Object, Object)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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