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.");
}
如何验证计划的ExecutorService已开始?
-
29-07-2022 - |
题
描述
一个任务A正在运行,可以持续2s至60+s。
当A运行时,我安排了执行权限服务,该执行人员服务10s(延迟)将每5s(固定费率)打印一次“运行”。
ScheduledExecutorService scheduleNotifications = Executors
.newSingleThreadScheduledExecutor();
scheduleNotifications.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("A is running");
}
}, 10, 5, TimeUnit.SECONDS);
完成A后,我希望打印“ A已完成”。 但是只有我的计划ExecutorService任务已经开始, ,这意味着它至少打印一次“运行”一次。
- 如果在10秒之前完成,我什么都没打印。
- 如果A的需要超过10秒,则我每5次打印一次“运行”,然后在A完成后“完成”。
我怎么能在不使用布尔旗的情况下做到这一点 runnable
. 。有没有办法检查我的服务开始的?
解决方案
不隶属于 StackOverflow