我正在開發Java Swing程序。如果我使用以下方法,性能可能會有所下降嗎?SwingWorker性能
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SwingWorker worker = new SwingWorker() {
protected Object doInBackground() throws Exception {
return null;
}
protected void done() {
// do stuff
}
};
worker.execute();
}
});
如果我做內done()
一些沉重的處理任務,是它更好地定義SwingWorker
實例作爲一個全球性的成員,而不是一個本地匿名類的聲明?
我認爲如果它是本地的,它會在每次調用actionPerformed
時創建(是它?)。使用全局實例會提高性能嗎?全球/本地方法在內存利用率方面有何差異?
爲什麼做過做繁重的處理()?該方法在EDT上運行。如果你這樣做,你可以完全跳過SwingWorker。重處理應該在doInBackground()中完成... – sbrattla
'Global'是什麼意思?在Java中,沒有這樣的術語,或者它與一個「實例(類塊)」相關聯,或者它是「本地的(對其定義的塊)」。 'SwingWorker'是'Thread'的一個專用版本,它用於'GUI'相關的更新,這裏程序員在'doInBackground()'(它發生在EDT之外)執行耗時的任務,並且如果需要的話發送中間信息通過調用'publish(...)(在EDT上執行)'調用'process(...)'方法。 –