如何检查在执行器服务上运行的所有任务是否都已完成
2022-09-01 02:57:38
我有ConcurrentLinkedDeque,我将其用于同步推送/弹出元素,并且我有一些异步任务,这些任务从堆栈中获取一个元素,如果该元素具有邻居,则将其推送到堆栈。
示例代码:
private ConcurrentLinkedDeque<Item> stack = new ConcurrentLinkedDeque<>();
private ExecutorService exec = Executors.newFixedThreadPool(5);
while ((item = stack.pollFirst()) != null) {
if (item == null) {
} else {
Runnable worker = new Solider(this, item);
exec.execute(worker);
}
}
class Solider{
public void run(){
if(item.hasNeighbors){
for(Item item:item.neighbors){
stack.push(item)
}
}
}
}
我想在while循环中有额外的语句来回答这个问题 - “Executor中的任何任务都在工作?