我想知道是否有办法关闭Java ExecutorService并允许所有提交的任务完成而不阻塞.
更具体地说,我想安排一个具有延迟的Runnable并继续使用代码,而不需要保留对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但我想知道这是否可以使用ExecutorService