diff --git a/jdk/src/share/classes/java/awt/EventQueue.java b/jdk/src/share/classes/java/awt/EventQueue.java index 45230515330..f7fe996ab40 100644 --- a/jdk/src/share/classes/java/awt/EventQueue.java +++ b/jdk/src/share/classes/java/awt/EventQueue.java @@ -843,7 +843,8 @@ public class EventQueue { final void initDispatchThread() { synchronized (this) { - if (dispatchThread == null && !threadGroup.isDestroyed()) { + AppContext appContext = AppContext.getAppContext(); + if (dispatchThread == null && !threadGroup.isDestroyed() && !appContext.isDisposed()) { dispatchThread = (EventDispatchThread) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { diff --git a/jdk/src/share/classes/sun/awt/AWTAutoShutdown.java b/jdk/src/share/classes/sun/awt/AWTAutoShutdown.java index 871da0ce3f5..91d646021b6 100644 --- a/jdk/src/share/classes/sun/awt/AWTAutoShutdown.java +++ b/jdk/src/share/classes/sun/awt/AWTAutoShutdown.java @@ -154,14 +154,17 @@ public final class AWTAutoShutdown implements Runnable { /** * Add a specified thread to the set of busy event dispatch threads. - * If this set already contains the specified thread, the call leaves - * this set unchanged and returns silently. + * If this set already contains the specified thread or the thread is null, + * the call leaves this set unchanged and returns silently. * * @param thread thread to be added to this set, if not present. * @see AWTAutoShutdown#notifyThreadFree * @see AWTAutoShutdown#isReadyToShutdown */ public void notifyThreadBusy(final Thread thread) { + if (thread == null) { + return; + } synchronized (activationLock) { synchronized (mainLock) { if (blockerThread == null) { @@ -177,14 +180,17 @@ public final class AWTAutoShutdown implements Runnable { /** * Remove a specified thread from the set of busy event dispatch threads. - * If this set doesn't contain the specified thread, the call leaves - * this set unchanged and returns silently. + * If this set doesn't contain the specified thread or the thread is null, + * the call leaves this set unchanged and returns silently. * * @param thread thread to be removed from this set, if present. * @see AWTAutoShutdown#notifyThreadBusy * @see AWTAutoShutdown#isReadyToShutdown */ public void notifyThreadFree(final Thread thread) { + if (thread == null) { + return; + } synchronized (activationLock) { synchronized (mainLock) { busyThreadSet.remove(thread);