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

# Interface EventQueue

All Superinterfaces:
  `Mirror`

public interface EventQueue extends Mirror
Manager of incoming debugger events for a target VM. Events are always grouped in `EventSet`s. EventSets generated by the debugger back end can be read here. There is one instance of EventQueue assigned to a particular `VirtualMachine`.

Some events cause the suspension of the target VM - event requests (`com.sun.jdi.request`) with a `suspend policy` of `SUSPEND_ALL` or `SUSPEND_EVENT_THREAD` and sometimes `VMStartEvent`. If these suspensions are not resumed the target VM will hang. Thus, it is always good policy to `remove()` every EventSet from the event queue until an EventSet containing a `VMDisconnectEvent` is read. Unless `resume` is being handled in another way, each EventSet should invoke `EventSet.resume()`.

Since:
  1.3
See Also:
  - `EventSet`
  - `VirtualMachine`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `EventSet`
  `remove()`
  Waits forever for the next available event.
  `EventSet`
  `remove(long timeout)`
  Waits a specified time for the next available event.

  ### Methods declared in interface com.sun.jdi.Mirror

  `toString, virtualMachine`

- ## Method Details

  - ### remove

    EventSet remove() throws InterruptedException
    Waits forever for the next available event.
    Returns:
      the next `EventSet`.
    Throws:
      `InterruptedException` - if any thread has interrupted this thread.
      `VMDisconnectedException` - if the connection to the target VM is no longer available. Note this will always be preceded by a `VMDisconnectEvent`.

  - ### remove

    EventSet remove(long timeout) throws InterruptedException
    Waits a specified time for the next available event.
    Parameters:
      `timeout` - Time in milliseconds to wait for the next event
    Returns:
      the next `EventSet`, or null if there is a timeout.
    Throws:
      `InterruptedException` - if any thread has interrupted this thread.
      `VMDisconnectedException` - if the connection to the target VM is no longer available. Note this will always be preceded by a `VMDisconnectEvent`.
      `IllegalArgumentException` - if the timeout argument contains an illegal value.