我有一个提交给ExecutorService
. 但是我需要在凌晨 2:30 的最后期限之前关闭 ExecutorService,即使任务没有完成。我怎样才能做到这一点?我检查了API,只有一个方法如下:
ExecutorService exec = //...
exec.awaitTermination(100, TimeUnit.MILLISECONDS);
但是我怎样才能使下面的块原子地执行呢?也就是说,我怎样才能避免差距?例如:
long timeDiff= calculate(now, deadline);
// Gap: assuming current thread does not have chance to run for 10 minutes...
exec.awaitTermination(timeDiff, TimeUnit.MILLISECONDS);
谢谢。