簡體   English   中英

如何驗證ScheduledExecutorService已啟動?

[英]How verify a ScheduledExecutorService has started?

描述

任務A正在運行,可能持續2s到60 + s。

當A運行時,我安排了一個ExecutorService,該服務在10s(延遲)后每5s(固定速率)打印一次“ running”。

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花費的時間超過10s,則我每5s打印一次“ running”,然后在A完成后“完成”打印。

我如何才能做到這一點,而無需在schduled runnable使用布爾標志。 有沒有辦法檢查我的服務是否啟動?

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.");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM