说明
任务A正在运行,可以持续2秒到60秒。
当A正在运行时,我安排了一个ExecutorService,在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已完成”。 但仅当我的ScheduledExecutorService任务已启动时,这意味着它至少打印了一次“运行”。
如果不在计划runnable
内使用布尔标志,我怎么能这样做呢?有没有办法检查我的服务是否已启动?
答案 0 :(得分:1)
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.");
}