Интерфейс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
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)
Методы 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.