4
我試圖找到SwingWorker執行()與doInBackground()之間的區別,所以我寫了這個簡單的程序來測試差異。SwingWorker不能正常工作
public static void main(String[] args) {
// TODO code application logic here
for(int i=0;i<10;i++){
try {
new Worker().execute();
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static class Worker extends SwingWorker<Void,Void>{
@Override
protected Void doInBackground() throws Exception {
System.out.println("Hello");
return null;
}
}
當我運行這個程序,我得到了以下異常:
Exception in thread "AWT-Windows" java.lang.IllegalStateException: Shutdown in progress
at java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:39)
at java.lang.Runtime.addShutdownHook(Runtime.java:192)
at sun.awt.windows.WToolkit.run(WToolkit.java:281)
at java.lang.Thread.run(Thread.java:619)
然而,當我試圖使用doInBackground()
new Worker().doInBackground();
節目作品和打印預期的結果。那麼我的錯誤是什麼?我應該使用doInBackground()方法,因爲我已經閱讀過它不應該使用它。
由於
異常情況如何? – 2010-10-06 06:30:41
發生異常是因爲您的程序在工作人員啓動時已經退出。 – Guillaume 2010-10-06 06:45:34
那麼如何解決呢? – 2010-10-06 07:09:46