ScheduledExecutorService 满足条件后退出
时间: 2023-07-15 21:13:45 浏览: 66
ExecutorService.shutdown()应该是在线程执行完毕后,才会去关闭
5星 · 资源好评率100%
如果你想要在 ScheduledExecutorService 中满足条件后退出,你可以使用一个标志变量来实现。你可以在任务中检查这个标志变量的状态,然后在满足条件时将其设置为 true。当标志变量被设置为 true 时,你可以调用 ScheduledExecutorService 的 shutdown() 方法来关闭执行器。这将导致当前正在执行的任务完成,但不会执行任何新的任务。
以下是一个示例代码:
```
import java.util.concurrent.*;
public class ScheduledExecutorExample {
private static volatile boolean flag = false;
private static final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
public static void main(String[] args) throws InterruptedException {
executor.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
// do something
if (flag) {
executor.shutdown();
}
}
}, 0, 1, TimeUnit.SECONDS);
// wait for the flag to be set
while (!flag) {
Thread.sleep(100);
}
}
}
```
在这个示例中,我们创建了一个 ScheduledExecutorService,并使用 scheduleWithFixedDelay() 方法来定期执行一个任务。在任务中,我们检查标志变量的状态,如果它被设置为 true,我们就调用 ScheduledExecutorService 的 shutdown() 方法来关闭执行器。在主线程中,我们等待标志变量被设置为 true,然后退出程序。
阅读全文