Spec-Zone.ru › OpenJDK 27

Класс EventQueue

java.lang.Object
java.awt.EventQueue
public class EventQueue extends Object
EventQueue — это независимый от платформы класс, который помещает в очередь события как из базовых классов-пиров, так и из доверенных классов приложения.

Он инкапсулирует механизм асинхронной диспетчеризации событий, который извлекает события из очереди и диспетчеризует их, вызывая метод dispatchEvent(AWTEvent) этого EventQueue с диспетчеризуемым событием в качестве аргумента. Конкретное поведение этого механизма зависит от реализации. Единственные требования состоят в том, что события, фактически помещенные в эту очередь (обратите внимание, что события, отправляемые в EventQueue, могут объединяться), диспетчеризуются:

Последовательно.
То есть несколько событий из этой очереди не могут диспетчеризоваться одновременно.
В том же порядке, в котором они помещаются в очередь.
То есть если AWTEvent A помещено в EventQueue раньше, чем AWTEvent B, событие B не будет диспетчеризовано раньше события A.

Сведения о проблемах многопоточности, связанных с механизмом диспетчеризации событий, см. в разделе Проблемы многопоточности AWT.

Начиная с:
1.1

Краткое описание конструкторов

Конструктор Описание
EventQueue()
Инициализирует новый экземпляр EventQueue.

Краткое описание методов

Модификатор и тип Метод Описание
SecondaryLoop createSecondaryLoop()
Создает новый secondary loop, связанный с этой очередью событий.
protected void dispatchEvent(AWTEvent event)
Диспетчеризует событие.
static AWTEvent getCurrentEvent()
Возвращает событие, которое в данный момент диспетчеризуется EventQueue, связанным с вызывающим потоком.
static long getMostRecentEventTime()
Возвращает временную метку последнего события, имевшего временную метку и диспетчеризованного из EventQueue, связанного с вызывающим потоком.
AWTEvent getNextEvent()
Удаляет событие из EventQueue и возвращает его.
static void invokeAndWait(Runnable runnable)
Вызывает выполнение метода run объекта runnable в dispatch thread объекта the system EventQueue.
static void invokeLater(Runnable runnable)
Вызывает выполнение метода run объекта runnable в dispatch thread объекта the system EventQueue.
static boolean isDispatchThread()
Возвращает true, если вызывающий поток является потоком диспетчеризации объекта the current AWT EventQueue.
AWTEvent peekEvent()
Возвращает первое событие в EventQueue, не удаляя его.
AWTEvent peekEvent(int id)
Возвращает первое событие с указанным идентификатором, если оно есть.
protected void pop()
Прекращает диспетчеризацию событий с использованием этого EventQueue.
void postEvent(AWTEvent theEvent)
Помещает в EventQueue событие в стиле 1.1.
void push(EventQueue newEventQueue)
Заменяет существующий EventQueue указанным.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Определяет, является ли другой объект «равным» этому.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Механизм финализации устарел и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного времени.

Подробное описание конструкторов

EventQueue

public EventQueue()
Инициализирует новый экземпляр EventQueue.

Подробное описание методов

postEvent

public void postEvent(AWTEvent theEvent)
Помещает в EventQueue событие в стиле 1.1. Если в очереди уже есть событие с тем же идентификатором и источником, будет вызван метод coalesceEvents источника Component.
Параметры:
theEvent — экземпляр java.awt.AWTEvent или его подкласса
Исключения:
NullPointerException — если theEvent имеет значение null

getNextEvent

public AWTEvent getNextEvent() throws InterruptedException
Удаляет событие из EventQueue и возвращает его. Этот метод блокирует выполнение до тех пор, пока другой поток не отправит событие.
Возвращает:
следующее AWTEvent
Исключения:
InterruptedException — если какой-либо поток прервал этот поток

peekEvent

public AWTEvent peekEvent()
Возвращает первое событие в EventQueue, не удаляя его.
Возвращает:
первое событие

peekEvent

public AWTEvent peekEvent(int id)
Возвращает первое событие с указанным идентификатором, если оно есть.
Параметры:
id — идентификатор типа требуемого события
Возвращает:
первое событие с указанным идентификатором или null, если такого события нет

dispatchEvent

protected void dispatchEvent(AWTEvent event)
Диспетчеризует событие. Способ диспетчеризации зависит от типа события и типа объекта-источника события:
Типы событий, типы источников и методы диспетчеризации
Тип события Тип источника Куда диспетчеризуется
ActiveEvent Любой event.dispatch()
Другое Component source.dispatchEvent(AWTEvent)
Другое MenuComponent source.dispatchEvent(AWTEvent)
Другое Другое Действие не выполняется (игнорируется)
Параметры:
event — экземпляр java.awt.AWTEvent или его подкласса
Исключения:
NullPointerException — если event имеет значение null
Начиная с:
1.2

getMostRecentEventTime

public static long getMostRecentEventTime()
Возвращает временную метку последнего события, имевшего временную метку и диспетчеризованного из EventQueue, связанного с вызывающим потоком. Если в данный момент диспетчеризуется событие с временной меткой, будет возвращена его временная метка. Если события еще не диспетчеризовались, вместо нее будет возвращено время инициализации EventQueue. В текущей версии JDK временные метки есть только у InputEvents, ActionEvents и InvocationEvents; однако в будущих версиях JDK временные метки могут быть добавлены и к другим типам событий. Обратите внимание, что этот метод следует вызывать только из event dispatching thread приложения. Если этот метод вызван из другого потока, вместо этого будет возвращено текущее системное время (согласно System.currentTimeMillis()).
Возвращает:
временную метку последнего диспетчеризованного InputEvent, ActionEvent или InvocationEvent либо System.currentTimeMillis(), если этот метод вызван не из потока диспетчеризации событий
Начиная с:
1.4
См. также:
  • InputEvent.getWhen()
  • ActionEvent.getWhen()
  • InvocationEvent.getWhen()
  • isDispatchThread()

getCurrentEvent

public static AWTEvent getCurrentEvent()
Возвращает событие, которое в данный момент диспетчеризуется EventQueue, связанным с вызывающим потоком. Это полезно, если методу нужен доступ к событию, но он не был спроектирован для получения ссылки на него в качестве аргумента. Обратите внимание, что этот метод следует вызывать только из потока диспетчеризации событий приложения. Если этот метод вызван из другого потока, будет возвращено null.
Возвращает:
событие, которое в данный момент диспетчеризуется, или null, если этот метод вызван не из потока диспетчеризации событий
Начиная с:
1.4

push

public void push(EventQueue newEventQueue)
Заменяет существующий EventQueue указанным. Все ожидающие события передаются новой EventQueue для обработки.
Параметры:
newEventQueue — экземпляр EventQueue (или его подкласса), который будет использоваться
Исключения:
NullPointerException — если newEventQueue имеет значение null
Начиная с:
1.2
См. также:
  • pop()

pop

protected void pop() throws EmptyStackException
Прекращает диспетчеризацию событий с использованием этого EventQueue. Все ожидающие события передаются предыдущему EventQueue для обработки.

Предупреждение: во избежание взаимной блокировки не объявляйте этот метод синхронизированным в подклассе.

Исключения:
EmptyStackException — если для этого EventQueue ранее не вызывался push
Начиная с:
1.2
См. также:
  • push(EventQueue)

createSecondaryLoop

public SecondaryLoop createSecondaryLoop()
Создает новый secondary loop, связанный с этой очередью событий. Используйте методы SecondaryLoop.enter() и SecondaryLoop.exit(), чтобы запускать и останавливать цикл событий и диспетчеризовать события из этой очереди.
Возвращает:
secondaryLoop — новый объект вторичного цикла, который можно использовать для запуска нового вложенного цикла событий и диспетчеризации событий из этой очереди
Начиная с:
1.7
См. также:
  • SecondaryLoop.enter()
  • SecondaryLoop.exit()

isDispatchThread

public static boolean isDispatchThread()
Возвращает true, если вызывающий поток является потоком диспетчеризации объекта the current AWT EventQueue. Используйте этот метод, чтобы убедиться, что определенная задача выполняется (или не выполняется) в этом потоке.

Примечание: используйте методы invokeLater(Runnable) или invokeAndWait(Runnable), чтобы выполнить задачу в потоке диспетчеризации объекта the current AWT EventQueue.

Возвращает:
true, если выполнение происходит в потоке диспетчеризации объекта the current AWT EventQueue
Начиная с:
1.2
См. также:
  • invokeLater(Runnable)
  • invokeAndWait(Runnable)
  • Toolkit.getSystemEventQueue()

invokeLater

public static void invokeLater(Runnable runnable)
Вызывает выполнение метода run объекта runnable в dispatch thread объекта the system EventQueue. Это произойдет после обработки всех ожидающих событий.
Параметры:
runnable — Runnable, метод run которого должен быть асинхронно выполнен в event dispatch thread объекта the system EventQueue
Начиная с:
1.2
См. также:
  • invokeAndWait(Runnable)
  • Toolkit.getSystemEventQueue()
  • isDispatchThread()

invokeAndWait

public static void invokeAndWait(Runnable runnable) throws InterruptedException, InvocationTargetException
Вызывает выполнение метода run объекта runnable в dispatch thread объекта the system EventQueue. Это произойдет после обработки всех ожидающих событий. Вызов блокируется до тех пор, пока это не произойдет. Этот метод выбрасывает Error, если вызван из event dispatcher thread.
Параметры:
runnable — Runnable, метод run которого должен быть синхронно выполнен в event dispatch thread объекта the system EventQueue
Исключения:
InterruptedException — если какой-либо поток прервал этот поток
InvocationTargetException — если при выполнении runnable было выброшено исключение
Начиная с:
1.2
См. также:
  • invokeLater(Runnable)
  • Toolkit.getSystemEventQueue()
  • isDispatchThread()

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API