ExecutorService JProgressBar

时间:2011-10-22 16:48:59

标签: java executorservice jprogressbar

这可能是一个简单的问题,但我尝试了很多不同的东西,无论我尝试什么,我都无法让它发挥作用。

基本上我有一个JProgressBar,我想在处理任务列表时更新。任务很短,但有很多这就是我使用ExecutorService的原因。

问题是我找不到一个好方法来听ExecutorService剩下要处理的任务数。 invokeAll()阻塞,直到所有任务都完成为止,如果我使用submit()执行每个任务,那么在命中JProgressBar的代码时,任务就完成了。我甚至试过交错这两个,但这只是讨厌。

是否有一种简单的方法可以提交一批任务(实现可调用),然后调用一个开始处理的execute()方法?

或者我在这里看错了方向?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用ExecutorCompletionServicehttp://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ExecutorCompletionService.html

doc页面上的示例非常好;)

基本上,您只是将任务提交给服务,然后轮询或接受。任务恢复后,您可以更新JProgressbar