gpt4 book ai didi

java - 如何验证 ScheduledExecutorService 已启动?

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:51 26 4
gpt4 key购买 nike

描述

任务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 秒打印一次“running”,然后在 A 完成后打印“done”。

如果不在调度的可运行中使用 boolean 标志,我该如何做到这一点。有没有办法检查我的服务是否已启动?

最佳答案

ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(1);
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("A is running");
}
}, 10, 5, TimeUnit.SECONDS);

Thread.sleep(20000);
scheduler.shutdown();
if (scheduler.getCompletedTaskCount() > 0) {
System.out.println("A is done.");
}

关于java - 如何验证 ScheduledExecutorService 已启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com