1
dumpStackTrace의 첫 번째 요소가 java.awt.EventDispatchThread.run에있는 경우 isEventDispatchThread()가 false를 반환하는 이유는 무엇입니까?isEventDispatchThread가 실행 중이지만 EventDispatchThread.run에서 실행 중일 때
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
doStuff();
}
});
public void doStuff(){
Thread.dumpStack();
System.out.print(" [addToParents] "
+ ((SwingUtilities.isEventDispatchThread()
? "out of EDT" : " in EDT ")));
}
수율 :
[addToParents] out of EDT
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1342)
at pt.up.fe.dceg.neptus.gui.MissionBrowser.doStuff(MissionBrowser.java:899)
at pt.up.fe.dceg.neptus.gui.MissionBrowser.access$6(MissionBrowser.java:883)
at pt.up.fe.dceg.neptus.gui.MissionBrowser$3.run(MissionBrowser.java:1221)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
이 간략화 코드 (되지 MWS). 내가 MWS가 필요하다면 나에게 하나도 포함시키지 않았다는 생각이 들었다.
@kotoko와 EDT는 API에서 구현 된 모든 이벤트가 완료된 후 종료되었습니다. 몇 초 후, 스윙 GUI에 대한 모든 업데이트가 다시 그려졌습니다. – mKorbel
이제 바보가됩니다 ... 감사합니다. – kotoko