How to wait for all threads to finish, using ExecutorService?

前端 未结 26 2006
你的背包
你的背包 2020-11-22 01:55

I need to execute some amount of tasks 4 at a time, something like this:

ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
    tas         


        
26条回答
  •  被撕碎了的回忆
    2020-11-22 02:40

    Use a CountDownLatch:

    CountDownLatch latch = new CountDownLatch(totalNumberOfTasks);
    ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
    while(...) {
      taskExecutor.execute(new MyTask());
    }
    
    try {
      latch.await();
    } catch (InterruptedException E) {
       // handle
    }
    

    and within your task (enclose in try / finally)

    latch.countDown();
    

提交回复
热议问题