我正在開發Java桌面應用程序。此應用程序同時在多個線程中執行相同的任務public class MyTask implements Callable<MyObject> {
。Java - SwingWorker - 問題
現在,當用戶點擊「開始」按鈕時,我創建了SwingWorker myWorker
並執行了它。
現在,此myWorker
創建了多個MyTask
實例並將它們提交到ExecutorService
。
每個MyTask
實例都有一個循環,並在每次迭代時生成一箇中間結果。現在,我希望在生成它們後立即從各個MyTask
實例中收集這些中間結果。然後,在收集每個MyTask
實例的這些中間結果後,我想通過SwingWorker.publish(MyObject)
發佈它,以便在EDT上顯示進度。
Q1。我該如何執行此操作?我應該讓MyTask
的子類SwingWorker
而不是Callable
也得到中間結果,因爲我認爲Callable
只返回最終結果。 Q230。
Q2。如果Q1的答案。是的,那麼你能給我一個小例子來展示我如何獲得這些中間結果並聚合它們,然後從主要SwingWorker
發佈它們?
Q3。如果在這種情況下我不能使用SwingWorker
,那我該如何實現這一點?
當您從每個任務收集中間結果時,是否希望它們都來自相同的迭代?即收集所有迭代1結果,然後迭代2結果? – mdma 2010-05-08 16:31:32