我需要提交一些任务,然后等待它们,直到所有结果都可用。他们每个人都将 a 添加String
到 a Vector
(默认情况下是同步的)。然后我需要为 Vector 中的每个结果启动一个新任务,但只有在所有以前的任务都停止工作时我才需要这样做。
我想使用 Java Executor,特别是我尝试使用Executors.newFixedThreadPool(100)
以使用固定数量的线程(我有可变数量的任务,可以是 10 或 500),但我是执行器的新手,我不知道如何等待任务终止。这就像我的程序需要做的伪代码:
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 的指南/书吗?