在目标
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, toArrayMethods 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()。否则,调用此方法不起作用。
-