1

这可能是一个简单的,但我已经尝试了很多不同的东西,无论我尝试什么,我都无法让它工作。

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

问题是我找不到一个好方法来听 ExecutorService 有多少任务要处理。invokeAll() 阻塞,直到所有任务都完成,如果我使用 submit() 执行每个任务,则在它到达 JProgressBar 的代码时,这些任务几乎已经完成。我什至尝试将两者交错,但这很讨厌。

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

还是我在这里看完全错误的方向?

谢谢!

4

1 回答 1

1

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

文档页面上的示例非常好;)

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

于 2011-10-22T16:55:21.447 回答