【发布时间】:2011-02-17 02:22:05
【问题描述】:
我正在开发 Java 桌面应用程序。这个应用程序在多个线程中同时执行相同的任务public class MyTask implements Callable<MyObject> {。
现在,当用户点击“开始”按钮时,我创建了一个SwingWorker myWorker 并执行了它。
现在,这个myWorker 创建多个MyTask 实例并将它们提交给ExecutorService。
每个MyTask 实例都有一个循环,并在每次迭代时生成一个中间结果。现在,我想在每个MyTask 实例生成后立即收集这些中间结果。然后从每个MyTask 实例收集这些中间结果后,我想通过SwingWorker.publish(MyObject) 发布它,以便在 EDT 上显示进度。
Q1.我该如何实现呢?我是否应该将MyTask 设为SwingWorker 的子类而不是Callable 以获得中间结果,因为我认为Callable 只返回最终结果。
Q2. 如果 Q1 的答案。是的,那么你能给我一个小例子来说明我如何获得这些中间结果并聚合它们,然后从 main SwingWorker 发布它们吗?
Q3.如果在这种情况下我不能使用SwingWorker,那我该如何实现呢?
【问题讨论】:
-
当您收集每个任务的中间结果时,您是否希望它们都来自同一个迭代? IE。收集所有迭代 1 结果,然后收集迭代 2 结果?
标签: java user-interface swingworker callable