【发布时间】:2010-11-22 06:29:18
【问题描述】:
我需要提交一些任务,然后等待它们,直到所有结果都可用。他们每个人都将String 添加到Vector(默认情况下是同步的)。然后我需要为 Vector 中的每个结果启动一个新任务,但只有在所有先前的任务都停止工作时我才需要这样做。
我想使用 Java Executor,特别是我尝试使用 Executors.newFixedThreadPool(100) 以使用固定数量的线程(我有可变数量的任务,可以是 10 或 500)但我是新的 executors 和我不知道如何等待任务终止。
这类似于我的程序需要执行的伪代码:
ExecutorService e = Executors.newFixedThreadPool(100);
while(true){
/*do something*/
for(...){
<start task>
}
<wait for all task termination>
for each String in result{
<start task>
}
<wait for all task termination>
}
我无法执行 e.shutdown,因为我有一段时间(真的),我需要重用 executorService...
你能帮帮我吗?你能给我推荐一本关于 java executors 的指南/书吗?
【问题讨论】:
标签: java multithreading concurrency executorservice