The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
EQ.detachDispatchThread() is called in two cases: when we caught ThreadDeath or InterruptedExceptions, and when EDT is interrupted (and the interrupted flag is not cleared). If this happens, when the current AppContext is disposed, we simply don't care if any events are pending. If the thread is interrupted for another reason, it will die anyway, but the very next incoming event will re-create EDT. In this case, thread interruption is considered an application bug.
16-10-2013
The fix covers two scenarios:
1. User code calls EventDispatchThread.interrupt() and then EventDispatchThread.interrupted() which clears interrupted state and
EDT doesn't stop.
2. EventDispatchThread.interrupt() is called without clearing the interrupted state (e.g. invocation of AppContext.dispose()) that makes EDT terminate.
The other scenario, in which AppContext.dispose() is called from the thread other than EDT and after that EventDispatchThread.interrupted() is called from EDT preventing EDT from termination, is treated like an architecture bug.
Some dead code was also removed because detaching of EDT is always forced.
16-10-2013
The fix should include the code from 7u: don't override interrupt() in EDT, but check for isInterrupted() on every event loop iteration. This approach has known drawback: application code is able to catch EDT interruptions and clear interruption status, and AWT will keep dispatching events. If interrupt() was called from AppContext.dispose(), the problem described in 7081670 will re-appear. To solve this, EDT can provide another method (e.g. stopDispatching()) to be called from AppContext.dispose() to shut down dispatch thread unconditionally.