描述
任务 A 正在运行,可以持续 2 秒到 60 多秒。
在 A 运行时,我安排了一个 ExecutorService,它在 10 秒(延迟)后每 5 秒打印一次“运行”(固定速率)。
ScheduledExecutorService scheduleNotifications = Executors
.newSingleThreadScheduledExecutor();
scheduleNotifications.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("A is running");
}
}, 10, 5, TimeUnit.SECONDS);
一旦 A 完成,我希望打印“A 完成”。但前提是我的 ScheduledExecutorService 任务已经开始,这意味着它至少打印了一次“正在运行”。
- 如果 A 在 10 秒之前完成,我不会打印任何内容。
- 如果 A 花费超过 10 秒,我每 5 秒打印一次“正在运行”,然后在 A 完成后“完成”。
如果不在 schduled 中使用布尔标志,我怎么能做到这一点runnable
?有没有办法检查我的服务是否已启动?