我想知道是否有办法关闭Java <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
并允许所有提交的任务完成而不会阻塞。
更具体一点,我想安排ExecutorService
延迟并继续使用代码,而无需保留对Runnable
的引用以便能够将其关闭。< / p>
以下代码将终止已提交的任务,因为它尚未启动:
ExecutorService
虽然此代码将阻止,直到任务完成:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
executor.shutdown();
...
我希望有这样的东西:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
executor.awaitTermination(timeout, TimeUnit.MILLISECONDS);
...
我知道这可能会使用ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
executor.shutdownAfterTerminationWithoutBlocking();
...
code that runs without waiting
,但我想知道这是否可以使用Timer
答案 0 :(得分:5)
ExecutorService.shutdown
javadoc说:
启动有序关闭,其中执行先前提交的任务,但不接受任何新任务。
因此,已经提交但尚未开始的任务将被执行。正如您所需。