public class EventQueue extends Object
EventQueue is a platform-independent class
 that queues events, both from the underlying peer classes
 and from trusted application classes.
 
 It encapsulates asynchronous event dispatch machinery which
 extracts events from the queue and dispatches them by calling
 dispatchEvent(AWTEvent) method
 on this EventQueue with the event to be dispatched
 as an argument.  The particular behavior of this machinery is
 implementation-dependent.  The only requirements are that events
 which were actually enqueued to this queue (note that events
 being posted to the EventQueue can be coalesced)
 are dispatched:
 
AWTEvent A is enqueued
        to the EventQueue before
        AWTEvent B then event B will not be
        dispatched before event A.
 
 Some browsers partition applets in different code bases into
 separate contexts, and establish walls between these contexts.
 In such a scenario, there will be one EventQueue
 per context. Other browsers place all applets into the same
 context, implying that there will be only a single, global
 EventQueue for all applets. This behavior is
 implementation-dependent.  Consult your browser's documentation
 for more information.
 
For information on the threading issues of the event dispatch machinery, see AWT Threading Issues.
| Constructor and Description | 
|---|
| EventQueue() | 
| Modifier and Type | Method and Description | 
|---|---|
| SecondaryLoop | createSecondaryLoop()Creates a new  secondary loopassociated with this
 event queue. | 
| protected void | dispatchEvent(AWTEvent event)Dispatches an event. | 
| static AWTEvent | getCurrentEvent()Returns the the event currently being dispatched by the
  EventQueueassociated with the calling thread. | 
| static long | getMostRecentEventTime()Returns the timestamp of the most recent event that had a timestamp, and
 that was dispatched from the  EventQueueassociated with the
 calling thread. | 
| AWTEvent | getNextEvent()Removes an event from the  EventQueueand
 returns it. | 
| static void | invokeAndWait(Runnable runnable) | 
| static void | invokeLater(Runnable runnable) | 
| static boolean | isDispatchThread()Returns true if the calling thread is
  the current AWT EventQueue's
 dispatch thread. | 
| AWTEvent | peekEvent()Returns the first event on the  EventQueuewithout removing it. | 
| AWTEvent | peekEvent(int id)Returns the first event with the specified id, if any. | 
| protected void | pop()Stops dispatching events using this  EventQueue. | 
| void | postEvent(AWTEvent theEvent)Posts a 1.1-style event to the  EventQueue. | 
| void | push(EventQueue newEventQueue)Replaces the existing  EventQueuewith the specified one. | 
public void postEvent(AWTEvent theEvent)
EventQueue.
 If there is an existing event on the queue with the same ID
 and event source, the source Component's
 coalesceEvents method will be called.theEvent - an instance of java.awt.AWTEvent,
          or a subclass of itNullPointerException - if theEvent is nullpublic AWTEvent getNextEvent() throws InterruptedException
EventQueue and
 returns it.  This method will block until an event has
 been posted by another thread.AWTEventInterruptedException - if any thread has interrupted this threadpublic AWTEvent peekEvent()
EventQueue
 without removing it.public AWTEvent peekEvent(int id)
id - the id of the type of event desirednull
    if there is no such eventprotected void dispatchEvent(AWTEvent event)
| Event Type | Source Type | Dispatched To | 
|---|---|---|
| ActiveEvent | Any | event.dispatch() | 
| Other | Component | source.dispatchEvent(AWTEvent) | 
| Other | MenuComponent | source.dispatchEvent(AWTEvent) | 
| Other | Other | No action (ignored) | 
event - an instance of java.awt.AWTEvent,
          or a subclass of itNullPointerException - if event is nullpublic static long getMostRecentEventTime()
EventQueue associated with the
 calling thread. If an event with a timestamp is currently being
 dispatched, its timestamp will be returned. If no events have yet
 been dispatched, the EventQueue's initialization time will be
 returned instead.In the current version of
 the JDK, only InputEvents,
 ActionEvents, and InvocationEvents have
 timestamps; however, future versions of the JDK may add timestamps to
 additional event types. Note that this method should only be invoked
 from an application's event dispatching thread.
 If this method is
 invoked from another thread, the current system time (as reported by
 System.currentTimeMillis()) will be returned instead.InputEvent,
         ActionEvent, or InvocationEvent to be
         dispatched, or System.currentTimeMillis() if this
         method is invoked on a thread other than an event dispatching
         threadInputEvent.getWhen(), 
ActionEvent.getWhen(), 
InvocationEvent.getWhen(), 
isDispatchThread()public static AWTEvent getCurrentEvent()
EventQueue associated with the calling thread. This is
 useful if a method needs access to the event, but was not designed to
 receive a reference to it as an argument. Note that this method should
 only be invoked from an application's event dispatching thread. If this
 method is invoked from another thread, null will be returned.public void push(EventQueue newEventQueue)
EventQueue with the specified one.
 Any pending events are transferred to the new EventQueue
 for processing by it.newEventQueue - an EventQueue
          (or subclass thereof) instance to be useNullPointerException - if newEventQueue is nullpop()protected void pop()
            throws EmptyStackException
EventQueue.
 Any pending events are transferred to the previous
 EventQueue for processing.
 Warning: To avoid deadlock, do not declare this method synchronized in a subclass.
EmptyStackException - if no previous push was made
  on this EventQueuepush(java.awt.EventQueue)public SecondaryLoop createSecondaryLoop()
secondary loop associated with this
 event queue. Use the SecondaryLoop.enter() and
 SecondaryLoop.exit() methods to start and stop the
 event loop and dispatch the events from this queue.SecondaryLoop.enter(), 
SecondaryLoop.exit()public static boolean isDispatchThread()
the current AWT EventQueue's
 dispatch thread. Use this method to ensure that a particular
 task is being executed (or not being) there.
 
 Note: use the invokeLater(java.lang.Runnable) or invokeAndWait(java.lang.Runnable)
 methods to execute a task in
 the current AWT EventQueue's
 dispatch thread.
 
the current AWT EventQueue's
 dispatch threadinvokeLater(java.lang.Runnable), 
invokeAndWait(java.lang.Runnable), 
Toolkit.getSystemEventQueue()public static void invokeLater(Runnable runnable)
runnable to have its run
 method called in the dispatch thread of
 the system EventQueue.
 This will happen after all pending events are processed.runnable - the Runnable whose run
                  method should be executed
                  asynchronously in the
                  event dispatch thread
                  of the system EventQueueinvokeAndWait(java.lang.Runnable), 
Toolkit.getSystemEventQueue(), 
isDispatchThread()public static void invokeAndWait(Runnable runnable) throws InterruptedException, InvocationTargetException
runnable to have its run
 method called in the dispatch thread of
 the system EventQueue.
 This will happen after all pending events are processed.
 The call blocks until this has happened.  This method
 will throw an Error if called from the
 event dispatcher thread.runnable - the Runnable whose run
                  method should be executed
                  synchronously in the
                  event dispatch thread
                  of the system EventQueueInterruptedException - if any thread has
                  interrupted this threadInvocationTargetException - if an throwable is thrown
                  when running runnableinvokeLater(java.lang.Runnable), 
Toolkit.getSystemEventQueue(), 
isDispatchThread() Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.