com.sun.jdi.event

## Interface EventSet

All Superinterfaces:
  Collection<Event>, Iterable<Event>, Mirror, Set<Event>

    public interface EventSet
    extends Mirror, Set<Event>

Several `Event` objects may be created at a given time by the target `VirtualMachine`. For example, there may be more than one `BreakpointRequest` for a given `Location` or you might single step to the same location as a BreakpointRequest. These `Event` objects are delivered together as an EventSet. For uniformity, an EventSet is always used to deliver `Event` objects. EventSets are delivered by the `EventQueue`. EventSets are unmodifiable.

Associated with the issuance of an event set, suspensions may have occurred in the target VM. These suspensions correspond with the `suspend policy`. To assure matching resumes occur, it is recommended, where possible, to complete the processing of an event set with `EventSet.resume()`.

The events that are grouped in an EventSet are restricted in the following ways:

- Always singleton sets:
  - `VMStartEvent`
  - `VMDisconnectEvent`
- Only with other VMDeathEvents:
  - `VMDeathEvent`
- Only with other ThreadStartEvents for the same thread:
  - `ThreadStartEvent`
- Only with other ThreadDeathEvents for the same thread:
  - `ThreadDeathEvent`
- Only with other ClassPrepareEvents for the same class:
  - `ClassPrepareEvent`
- Only with other ClassUnloadEvents for the same class:
  - `ClassUnloadEvent`
- Only with other AccessWatchpointEvents for the same field access:
  - `AccessWatchpointEvent`
- Only with other ModificationWatchpointEvents for the same field modification:
  - `ModificationWatchpointEvent`
- Only with other ExceptionEvents for the same exception occurrance:
  - `ExceptionEvent`
- Only with other MethodExitEvents for the same method exit:
  - `MethodExitEvent`
- Only with other Monitor contended enter events for the same monitor object:
  - Monitor Contended Enter Event
- Only with other Monitor contended entered events for the same monitor object:
  - Monitor Contended Entered Event
- Only with other Monitor wait events for the same monitor object:
  - Monitor Wait Event
- Only with other Monitor waited events for the same monitor object:
  - Monitor Waited Event
- Only with other members of this group, at the same location and in the same thread:
  - `BreakpointEvent`
  - `StepEvent`
  - `MethodEntryEvent`

Since:
  1.3
See Also:
  `Event`, `EventQueue`

### Method Summary

Methods
`EventIterator` `eventIterator()` Return an iterator specific to `Event` objects.
`void` `resume()` Resumes threads suspended by this event set.
`int` `suspendPolicy()` Returns the policy used to suspend threads in the target VM for this event set.

### Methods inherited from interface com.sun.jdi.Mirror

`toString, virtualMachine`

### Methods inherited from interface java.util.Set

`add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray`

### Method Detail

#### suspendPolicy

    int suspendPolicy()

Returns the policy used to suspend threads in the target VM for this event set. This policy is selected from the suspend policies for each event's request; the target VM chooses the policy which suspends the most threads. The target VM suspends threads according to that policy and that policy is returned here. See `EventRequest` for the possible policy values.

In rare cases, the suspend policy may differ from the requested value if a `ClassPrepareEvent` has occurred in a debugger system thread. See `ClassPrepareEvent.thread()` for details.

Returns:
  the suspendPolicy which is either `SUSPEND_ALL`, `SUSPEND_EVENT_THREAD` or `SUSPEND_NONE`.

#### eventIterator

    EventIterator eventIterator()

Return an iterator specific to `Event` objects.

#### resume

    void resume()

Resumes threads suspended by this event set. If the `suspendPolicy()` is `EventRequest.SUSPEND_ALL`, a call to this method is equivalent to `VirtualMachine.resume()`. If the suspend policy is `EventRequest.SUSPEND_EVENT_THREAD`, a call to this method is equivalent to `ThreadReference.resume()` for the event thread. Otherwise, a call to this method is a no-op.

Copyright © 1999, 2017, Oracle and/or its affiliates. All rights reserved.