我们的JAVA Swing APPLICATION在PROD中间歇性地为几个用户冻结 .

冻结时的EDT堆栈是:

“AWT-EventQueue-0” - 线程t @ 18 java.lang.Thread.State:在sun.misc.Unsafe.park上等待(本机方法) - 停车等待<1ba06b3>(java.util.concurrent . java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)上的java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await(AbstractQueuedSynchronizer.java:2039)中的locks.AbstractQueuedSynchronizer $ ConditionObject) .EventQueue.getNextEvent(EventQueue.java:608)java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:170)at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)at java.awt.EventDispatchThread.pumpEventsForHierarchy( EventDispatchThread.java:105)java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)at java.awt.SequencedEvent.dispatch(SequencedEvent.java:107)at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) )java.awt.EventQueue.access $ 700(EventQueue.java:97)at java.awt.EventQueue $ 3.run(EventQueue.jav) a:709)java.awt.EventQueue $ 3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)java.awt.EventQueue $ 4.run(EventQueue.java:731)at java.awt.EventQueue $ 4.run(EventQueue.java:729)at java位于java.awt.EventDispatchThread.pumpOneEventForFilters的java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)中的.security.AccessController.doPrivileged(Native Method)位于java.awt.EventQueue.dispatchEvent(EventQueue.java:728) (EventDispatchThread.java:201)java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 101)在java.awt.Eve java.awt.EventDispatchThread.run中的ntDispatchThread.pumpEvents(EventDispatchThread.java:93)(EventDispatchThread.java:82)

下面似乎是最接近的匹配:invokeAndWait seems to cause the application to freeze intermittently

我怀疑 ModelDialog 在某种程度上取代 eventQueue 并且 EventDispatch 仍在观看旧的 eventQueue 所以它没有醒来并处理事件 . 但这在测试程序中是不可重现的 .

欢迎任何建议或意见 .