public class InvocationEvent extends AWTEvent implements ActiveEvent
An event which executes the run() method on a Runnable
when dispatched by the AWT event dispatcher thread. This class can be used as a reference implementation of ActiveEvent rather than declaring a new class and defining dispatch().
Instances of this class are placed on the EventQueue by calls to invokeLater and invokeAndWait. Client code can use this fact to write replacement functions for invokeLater
and invokeAndWait without writing special-case code in any AWTEventListener objects.
An unspecified behavior will be caused if the id parameter of any particular InvocationEvent instance is not in the range from INVOCATION_FIRST to INVOCATION_LAST.
ActiveEvent, EventQueue.invokeLater(java.lang.Runnable), EventQueue.invokeAndWait(java.lang.Runnable), AWTEventListener, Serialized Formpublic static final int INVOCATION_FIRST
Marks the first integer id for the range of invocation event ids.
public static final int INVOCATION_DEFAULT
The default id for all InvocationEvents.
public static final int INVOCATION_LAST
Marks the last integer id for the range of invocation event ids.
protected Runnable runnable
The Runnable whose run() method will be called.
protected volatile Object notifier
The (potentially null) Object whose notifyAll() method will be called immediately after the Runnable.run() method has returned or thrown an exception or after the event was disposed.
isDispatched()protected boolean catchExceptions
Set to true if dispatch() catches Throwable and stores it in the exception instance variable. If false, Throwables are propagated up to the EventDispatchThread's dispatch loop.
public InvocationEvent(Object source,
Runnable runnable) Constructs an InvocationEvent with the specified source which will execute the runnable's run method when dispatched.
This is a convenience constructor. An invocation of the form InvocationEvent(source, runnable) behaves in exactly the same way as the invocation of . InvocationEvent(source, runnable, null, false)
This method throws an IllegalArgumentException if source is null.
source - The Object that originated the eventrunnable - The Runnable whose run method will be executedIllegalArgumentException - if source is nullEventObject.getSource(), InvocationEvent(Object, Runnable, Object, boolean)
public InvocationEvent(Object source,
Runnable runnable,
Object notifier,
boolean catchThrowables) Constructs an InvocationEvent with the specified source which will execute the runnable's run method when dispatched. If notifier is non-null, notifyAll() will be called on it immediately after run has returned or thrown an exception.
An invocation of the form InvocationEvent(source, runnable, notifier, catchThrowables) behaves in exactly the same way as the invocation of . InvocationEvent(source, InvocationEvent.INVOCATION_DEFAULT, runnable, notifier, catchThrowables)
This method throws an IllegalArgumentException if source is null.
source - The Object that originated the eventrunnable - The Runnable whose run method will be executednotifier - The Object whose notifyAll method will be called after Runnable.run has returned or thrown an exception or after the event was disposedcatchThrowables - Specifies whether dispatch should catch Throwable when executing the Runnable's run method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loopIllegalArgumentException - if source is nullEventObject.getSource(), InvocationEvent(Object, int, Runnable, Object, boolean)
public InvocationEvent(Object source,
Runnable runnable,
Runnable listener,
boolean catchThrowables) Constructs an InvocationEvent with the specified source which will execute the runnable's run method when dispatched. If listener is non-null, listener.run() will be called immediately after run has returned, thrown an exception or the event was disposed.
This method throws an IllegalArgumentException if source is null.
source - The Object that originated the eventrunnable - The Runnable whose run method will be executedlistener - The RunnableRunnable whose run() method will be called after the InvocationEvent was dispatched or disposedcatchThrowables - Specifies whether dispatch should catch Throwable when executing the Runnable's run method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loopIllegalArgumentException - if source is nullprotected InvocationEvent(Object source,
int id,
Runnable runnable,
Object notifier,
boolean catchThrowables) Constructs an InvocationEvent with the specified source and ID which will execute the runnable's run method when dispatched. If notifier is non-null, notifyAll will be called on it immediately after run has returned or thrown an exception.
This method throws an IllegalArgumentException if source is null.
source - The Object that originated the eventid - An integer indicating the type of event. For information on allowable values, see the class description for InvocationEvent
runnable - The Runnable whose run method will be executednotifier - The Object whose notifyAll method will be called after Runnable.run has returned or thrown an exception or after the event was disposedcatchThrowables - Specifies whether dispatch should catch Throwable when executing the Runnable's run method, or should instead propagate those Throwables to the EventDispatchThread's dispatch loopIllegalArgumentException - if source is nullEventObject.getSource(), AWTEvent.getID()
public void dispatch()
Executes the Runnable's run() method and notifies the notifier (if any) when run() has returned or thrown an exception.
dispatch in interface ActiveEvent
isDispatched()public Exception getException()
Returns any Exception caught while executing the Runnable's run()
method.
public Throwable getThrowable()
Returns any Throwable caught while executing the Runnable's run()
method.
public long getWhen()
Returns the timestamp of when this event occurred.
public boolean isDispatched()
Returns true if the event is dispatched or any exception is thrown while dispatching, false otherwise. The method should be called by a waiting thread that calls the notifier.wait() method. Since spurious wakeups are possible (as explained in Object.wait()), this method should be used in a waiting loop to ensure that the event got dispatched:
while (!event.isDispatched()) {
notifier.wait();
} If the waiting thread wakes up without dispatching the event, the isDispatched() method returns false, and the while loop executes once more, thus, causing the awakened thread to revert to the waiting mode.
If the notifier.notifyAll() happens before the waiting thread enters the notifier.wait() method, the while loop ensures that the waiting thread will not enter the notifier.wait() method. Otherwise, there is no guarantee that the waiting thread will ever be woken from the wait.
true if the event has been dispatched, or any exception has been thrown while dispatching, false otherwisedispatch(), notifier, catchExceptions
public String paramString()
Returns a parameter string identifying this event. This method is useful for event-logging and for debugging.
paramString in class AWTEvent
© 1993–2017, 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.