【发布时间】:2013-04-24 19:45:15
【问题描述】:
有什么方法可以在调用invokeAll() 后找到完成的任务数?似乎当所有线程都完成时,它会返回已完成任务的布尔值列表。
我有一个包含 1000 个任务的池,并希望以 100 个间隔查看它们,而不必将它们分成 100 个任务的批次。
出于兼容性原因,我还必须使用 Java 6,因此更新的方法无济于事。
另外,作为一个附带问题:invokeAll() 是否以 FIFO 方式处理任务?也就是说,任务是否按照它们添加到任务列表的顺序开始?
谢谢
【问题讨论】:
-
谢谢。我有两种类型的任务 A 和 B。我想知道所有类型 A 和类型 B 的任务什么时候完成。类型 A 和 B 在结构上是相同的,但类型 A 使用的数据更大,这就是为什么它需要更长的时间。我认为在任务类中定义以下变量会很好:1)final static int NTYPEATOComplete; 2) static int nTypeATasksCompleted;3) static long timeOfComepletion_A;和类型 B 相同。然后,在 call() 结束时,我添加 nTypeATasks++ 并检查是否 =100。如果是这样,我会记录完成时间。可以吗?还有 #workers=nCPU-1 因为任务很重。
标签: java multithreading executorservice executor