EventSet (Java Debug Interface )
Keywords: com.sun.jdi.event.EventSet interface
Date: 2015-07-19

com.sun.jdi.event

## Interface EventSet

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

      @Exported
      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

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `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, spliterator, toArray, toArray`

    - ### Methods inherited from interface java.util.Collection

      `parallelStream, removeIf, stream`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach`

- - ### 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, 2015, Oracle and/or its affiliates. All rights reserved.