EventSet (Java SE 26 & JDK 26)
Description: declaration: module: jdk.jdi, package: com.sun.jdi.event, interface: EventSet
Keywords: com.sun.jdi.event.EventSet interface

# 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 occurrence:
  - `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

  Modifier and Type
  Method
  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 declared in interface Collection

  `parallelStream, removeIf, stream, toArray`
  Modifier and Type
  Method
  Description
  `default Stream<Event>`
  `parallelStream()`
  Returns a possibly parallel `Stream` with this collection as its source.
  `default boolean`
  `removeIf(Predicate<? super Event> filter)`
  Removes all of the elements of this collection that satisfy the given predicate (optional operation).
  `default Stream<Event>`
  `stream()`
  Returns a sequential `Stream` with this collection as its source.
  `default <T> T[]`
  `toArray(IntFunction<T[]> generator)`
  Returns an array containing all of the elements in this collection, using the provided `generator` function to allocate the returned array.

  ### Methods declared in interface Iterable

  `forEach`
  Modifier and Type
  Method
  Description
  `default void`
  `forEach(Consumer<? super Event> action)`
  Performs the given action for each element of the `Iterable` until all elements have been processed or the action throws an exception.

  ### Methods declared in interface Mirror

  `toString, virtualMachine`
  Modifier and Type
  Method
  Description
  `String`
  `toString()`
  Returns a String describing this mirror
  `VirtualMachine`
  `virtualMachine()`
  Gets the VirtualMachine to which this Mirror belongs.

  ### Methods declared in interface Set

  `add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, spliterator, toArray, toArray`
  Modifier and Type
  Method
  Description
  `boolean`
  `add(Event e)`
  Adds the specified element to this set if it is not already present (optional operation).
  `boolean`
  `addAll(Collection<? extends Event> c)`
  Adds all of the elements in the specified collection to this set if they're not already present (optional operation).
  `void`
  `clear()`
  Removes all of the elements from this set (optional operation).
  `boolean`
  `contains(Object o)`
  Returns `true` if this set contains the specified element.
  `boolean`
  `containsAll(Collection<?> c)`
  Returns `true` if this set contains all of the elements of the specified collection.
  `boolean`
  `equals(Object o)`
  Compares the specified object with this set for equality.
  `int`
  `hashCode()`
  Returns the hash code value for this set.
  `boolean`
  `isEmpty()`
  Returns `true` if this set contains no elements.
  `Iterator<Event>`
  `iterator()`
  Returns an iterator over the elements in this set.
  `boolean`
  `remove(Object o)`
  Removes the specified element from this set if it is present (optional operation).
  `boolean`
  `removeAll(Collection<?> c)`
  Removes from this set all of its elements that are contained in the specified collection (optional operation).
  `boolean`
  `retainAll(Collection<?> c)`
  Retains only the elements in this set that are contained in the specified collection (optional operation).
  `int`
  `size()`
  Returns the number of elements in this set (its cardinality).
  `default Spliterator<Event>`
  `spliterator()`
  Creates a `Spliterator` over the elements in this set.
  `Object[]`
  `toArray()`
  Returns an array containing all of the elements in this set.
  `<T> T[]`
  `toArray(T[] a)`
  Returns an array containing all of the elements in this set; the runtime type of the returned array is that of the specified array.

- ## Method Details

  - ### 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.