Интерфейс 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
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
SUSPEND_ALL |
Приостановить все потоки при возникновении события |
static final int |
SUSPEND_EVENT_THREAD |
Приостановить только поток, вызвавший событие, при его возникновении |
static final int |
SUSPEND_NONE |
Не приостанавливать потоки при возникновении события |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addCountFilter |
Ограничивает число сообщений о запрошенном событии: оно будет сообщено не более одного раза после заданного количества возникновений. |
void |
disable() |
То же, что и setEnabled(false). |
void |
enable() |
То же, что и setEnabled(true). |
Object |
getProperty |
Возвращает значение свойства с указанным ключом. |
boolean |
isEnabled() |
Определяет, включён ли в данный момент этот запрос события. |
void |
putProperty |
Добавляет к этому запросу произвольное свойство «ключ/значение». |
void |
setEnabled |
Включает или отключает этот запрос события. |
void |
setSuspendPolicy |
Определяет, какие потоки следует приостановить при возникновении запрошенного события в целевой виртуальной машине. |
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)
Методы get/putProperty обеспечивают доступ к небольшой карте, относящейся к отдельному экземпляру. Её не следует путать с Properties.
Если значение равно null, этот метод удалит свойство.
- См. также:
getProperty
Object getProperty(Object key)
putProperty(Object, Object).- Возвращает:
- значение этого свойства или null
- См. также:
© 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