我有一个要求,我必须为 5 个任务启动 5 个线程,并且完成任务有一个特定的超时时间。超时后我想要所有任务的结果。我该如何使用 ExecutorService 来实现此目的? 根据我读到的有关 ExecutorService 的内容,我得出的结论是我需要以下内容:
List<Future> futures = new ArrayList<Future>();
futures.addAll(executor.submit(new someCallable()));
try {
if (!executorService.awaitTermination(30*1000, TimeUnit.MILLISECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
我应该执行 future.get()
吗?中断/不完整线程的结果怎么样?我对这部分感到困惑。
如果线程失败,我想将其状态字段标记为失败,如果线程成功,我想将它们标记为成功。
最佳答案
您可以仅使用 ExecutorService
中的 invokeAll
并指定超时 - API
关于java - 如何使用ExecutorService获取所有提交任务的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673555/