Spec-Zone.ru › OpenJDK 24

Интерфейс 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). Фильтры добавляются к событию по одному, только когда событие отключено. Несколько фильтров применяются с логикой И (CUT-OFF AND) в порядке их добавления к запросу. Только события, которые удовлетворяют всем фильтрам, помещаются в очередь событий.

Набор доступных фильтров зависит от запроса на событие, некоторые примеры фильтров:

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

Любой метод на 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()
Возвращает значение, которое описывает потоки, которые необходимо приостановить при возникновении запрошенного события в целевой виртуальной машине.

Методы, объявленные в интерфейсе com.sun.jdi.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(java.lang.Object)

getProperty

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

© 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://download.java.net/java/early_access/jdk24/docs/api/jdk.jdi/com/sun/jdi/request/EventRequest.html

Spec-Zone.ru

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