Spec-Zone.ru › OpenJDK 25

Интерфейс 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

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

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 срабатываниях этого фильтра. Чтобы запросить однократное событие, вызовите этот метод со значением счётчика 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/jdk.jdi/com/sun/jdi/request/EventRequest.html

Spec-Zone.ru

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