我正在运行的服务器应用程序获取多个任务请求,这些任务是我要使用任务系统处理的。
每个任务都表示为 Runnable
这将要求 n
线程池中的线程数,其中 n
小于或等于线程池大小。当然,线程池是必要的,这样就不会让cpu的线程过多。
但是,这些任务中有些可以是多线程的,有些则不能。这就是为什么一个任务可能需要等待其所有特定线程完成,以便合并来自这些线程的结果以获得最终结果。
如果一个使用多个 Thread
我们可以加入这样的例子:
try {
// Wait for all threads to finish their tasks
for (Thread thread : threads) {
thread.join();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
// Finish job here ..
但我需要这样的东西 java.util.concurrent.Executor
或者任何类似的线程池。
2条答案
按热度按时间ef1yzkbh1#
如果我理解正确,您将需要这样的东西(但您的体系结构似乎太复杂):
之后:
每个future.get()将等待任务结束(本例中最多100秒)。
kmpatx3s2#
你可以用
ExecutorService
还有一个CyclicBarrier
对于每个任务,如下所示: