在Java中,Executor类没有像ExecutorService子类那样具有shutdown/shutdownNow()/awaitTermination。因此,如果通过调用executorObject.execute(runnableTask)启动任务/线程,如何检查该任务是否完成?

最佳答案

您不能仅仅通过Executor做到这一点,因为它提供了一个单独的方法void execute(Runnable)。除非考虑使用返回ExecutorFuture实现,否则可以实现自己的notify/wait机制:

final CountDownLatch latch = new CountDownLatch(1);
Runnable task = () -> {
   try {
      // ... do useful work
   } finally {
      latch.countDown();
   }
}

executorObject.execute(task);

// wrap into try/catch for InterruptedException
// if not propagating further
latch.await(); // await(timeout);

10-07 20:00