Dan*_*ich 6 java concurrency multithreading
我有一系列并发任务要运行.如果其中任何一个失败,我想中断它们并等待终止.但假设没有一个失败,我想等待所有人都完成.
ExecutorCompletionService看起来几乎就像我想要的那样,但似乎没有办法判断我的所有任务是否都已完成,除非通过单独计算任务数量.(请注意,Javadoc for ExecutorCompletionService中的两个示例都跟踪任务的计数"n",并使用它来确定服务是否已完成.)
我是否会忽视某些内容,或者我是否真的必须自己编写此代码?
是的,如果您使用 ExecutorCompletionService,您确实需要跟踪。通常,您会对 future 调用 get() 以查看是否发生错误。如果不迭代任务,您怎么能判断任务失败了呢?