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.");
}
ScheduleDexecutorServiceが開始されたことをどのように検証しますか?
-
29-07-2022 - |
質問
説明
タスクAは実行されています。これは2秒から60+sまで続くことがあります。
Aが実行されている間、私は10S(遅延)が5秒ごとに「実行」を印刷する(固定金利)を印刷するexecutorserviceをスケジュールしました。
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タスクが開始された場合のみです, 、それが少なくとも一度は「ランニング」を印刷したことを意味します。
- 10代前に終了した場合、私は何も印刷しません。
- Aが10を超える場合、Aが終了したら5秒ごとに「実行中」を印刷し、「実行」します。
Schduled内のブールフラグを使用せずにそれを行うにはどうすればよいですか runnable
. 。私のサービスが始まったことを確認する方法はありますか?
解決
所属していません StackOverflow