4
從另一個線程(而不是EDT)調用JFrame的dispose()方法是否安全?從Java中的不同線程處置JFrame是否安全?
從另一個線程(而不是EDT)調用JFrame的dispose()方法是否安全?從Java中的不同線程處置JFrame是否安全?
不。它可能會工作,也可能會導致問題。只需將該方法包裝在SwingUtilities.invokeLater(...)中,不用擔心。
不,Swing不是線程安全的。使用類似
Runnable doWorkRunnable = new Runnable() {
public void run() { myFrame.dispose(); }
};
SwingUtilities.invokeLater(doWorkRunnable);
Runnable doWorkRunnable = new Runnable() {
public void run() { myFrame.dispose(); }
};
SwingUtilities.invokeLater(doWorkRunnable);
是的,但在新的runnable中包裝一個方法調用看起來很麻煩,不是嗎? – 2009-11-12 21:55:10
繁瑣與否,如果您需要從另一個線程執行gui工作,那您就必須這樣做 – nos 2009-11-12 21:56:03
調用方法似乎不太可能是唯一正在完成的任務。可能有其他代碼正在以非線程安全的方式運行。 (無論如何,真正的h4x0rz會使用'java.beans.EventHandler')。 – 2009-11-12 22:14:28