在目标
VirtualMachine
中,可能会同时创建多个Event
对象。例如,对于给定的Location
,可能会有多个BreakpointRequest
,或者您可能会单步执行到与BreakpointRequest相同的位置。这些Event
对象一起作为EventSet传递。为了统一起见,始终使用EventSet来传递Event
对象。EventSet由EventQueue
传递。EventSets是不可修改的。
与事件集的发出相关联的是目标VM中可能发生的暂停。这些暂停对应于暂停策略
。为了确保匹配的恢复发生,建议在可能的情况下,使用EventSet.resume()
完成事件集的处理。
在EventSet中分组的事件受到以下限制:
- 始终是单例集合:
- 仅与其他VMDeathEvents一起:
- 仅与同一线程的其他ThreadStartEvents一起:
- 仅与同一线程的其他ThreadDeathEvents一起:
- 仅与同一类的其他ClassPrepareEvents一起:
- 仅与同一类的其他ClassUnloadEvents一起:
- 仅与同一字段访问的其他AccessWatchpointEvents一起:
- 仅与同一字段修改的其他ModificationWatchpointEvents一起:
- 仅与同一异常发生的其他ExceptionEvents一起:
- 仅与同一方法退出的其他MethodExitEvents一起:
- 仅与同一监视器对象的其他Monitor contended enter事件一起:
- Monitor Contended Enter Event
- 仅与同一监视器对象的其他Monitor contended entered事件一起:
- Monitor Contended Entered Event
- 仅与同一监视器对象的其他Monitor wait事件一起:
- Monitor Wait Event
- 仅与同一监视器对象的其他Monitor waited事件一起:
- Monitor Waited Event
- 仅与此组的其他成员一起,在相同的位置和相同的线程中:
- 自 JDK 版本:
- 1.3
- 参见:
-
Method Summary
Methods declared in interface java.util.Collection
parallelStream, removeIf, stream, toArray
Methods declared in interface com.sun.jdi.Mirror
toString, virtualMachine
-
Method Details
-
suspendPolicy
int suspendPolicy()返回用于在此事件集中暂停目标VM中线程的策略。此策略是从每个事件请求的暂停策略中选择的;目标VM选择暂停最多线程的策略。目标VM根据该策略暂停线程,并在此处返回该策略。请参阅EventRequest
以获取可能的策略值。在罕见情况下,如果在调试器系统线程中发生了
ClassPrepareEvent
,则暂停策略可能与请求的值不同。有关详细信息,请参阅ClassPrepareEvent.thread()
。- 返回:
-
suspendPolicy,可以是
SUSPEND_ALL
、SUSPEND_EVENT_THREAD
或SUSPEND_NONE
。
-
eventIterator
EventIterator eventIterator()返回一个特定于Event
对象的迭代器。 -
resume
void resume()恢复由此事件集暂停的线程。如果suspendPolicy()
是EventRequest.SUSPEND_ALL
,则调用此方法等效于VirtualMachine.resume()
。如果暂停策略是EventRequest.SUSPEND_EVENT_THREAD
,则调用此方法等效于事件线程的ThreadReference.resume()
。否则,调用此方法不起作用。
-