小编use*_*715的帖子

如何检查ExecutorService上运行的所有任务是否都已完成

我有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)
                }
             } 
         }
    }
Run Code Online (Sandbox Code Playgroud)

我想在while循环中有另外的声明来回答这个问题 - "Executor中的任何任务都在工作吗?"

java multithreading executorservice

24
推荐指数
2
解决办法
3万
查看次数

标签 统计

executorservice ×1

java ×1

multithreading ×1