--- old/src/share/classes/java/awt/EventDispatchThread.java 2011-08-24 13:18:41.586380762 +0200 +++ new/src/share/classes/java/awt/EventDispatchThread.java 2011-08-24 13:18:41.310384212 +0200 @@ -35,7 +35,7 @@ import sun.awt.AWTAutoShutdown; import sun.awt.SunToolkit; -import java.util.Vector; +import java.util.ArrayList; import sun.util.logging.PlatformLogger; import sun.awt.dnd.SunDragSourceContextPeer; @@ -66,11 +66,10 @@ private EventQueue theQueue; private boolean doDispatch = true; - private boolean threadDeathCaught = false; private static final int ANY_EVENT = -1; - private Vector eventFilters = new Vector(); + private ArrayList eventFilters = new ArrayList(); EventDispatchThread(ThreadGroup group, String name, EventQueue queue) { super(group, name); @@ -94,7 +93,7 @@ }); } finally { EventQueue eq = getEventQueue(); - if (eq.detachDispatchThread(this) || threadDeathCaught) { + if (eq.detachDispatchThread(this) || isInterrupted()) { break; } } @@ -216,9 +215,7 @@ return true; } catch (ThreadDeath death) { - threadDeathCaught = true; - return false; - + throw death; } catch (InterruptedException interruptedException) { return false; // AppContext.dispose() interrupts all