在Java中,Executor类没有像ExecutorService子类那样具有shutdown/shutdownNow()/awaitTermination。因此,如果通过调用executorObject.execute(runnableTask)启动任务/线程,如何检查该任务是否完成?
最佳答案
您不能仅仅通过Executor
做到这一点,因为它提供了一个单独的方法void execute(Runnable)
。除非考虑使用返回Executor
的Future
实现,否则可以实现自己的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);