[英]Shutdown Java Executor After All Submitted Tasks Finished Without Blocking
我想知道是否有办法关闭 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
ExecutorService.shutdown
javadoc 说:
启动有序关闭,其中执行先前提交的任务,但不会接受新任务。
因此,已提交但尚未启动的任务将被执行。 完全按照您的需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.