zuc*_*ori 4 java executorservice scheduledexecutorservice java-threads
我想知道是否有办法关闭Java ExecutorService并允许所有提交的任务完成而不阻塞.
更具体地说,我想安排一个Runnable延迟并继续使用代码,而不需要保持ExecutorService对能够关闭它的引用.
以下代码将终止提交的任务,因为它尚未启动:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
executor.shutdown();
...
Run Code Online (Sandbox Code Playgroud)
虽然此代码将阻塞,直到任务完成:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
executor.awaitTermination(timeout, TimeUnit.MILLISECONDS);
...
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
executor.shutdownAfterTerminationWithoutBlocking();
...
code that runs without waiting
Run Code Online (Sandbox Code Playgroud)
我知道这可能使用,Timer但我想知道这是否可能使用ExecutorService
ExecutorService.shutdown javadoc说:
启动有序关闭,其中先前提交的任务将被执行,但不会接受任何新任务.
因此,已经提交但尚未开始的任务将被执行.正是你需要的.
| 归档时间: |
|
| 查看次数: |
2222 次 |
| 最近记录: |