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가 실행 중이며 2S에서 60+S까지 지속될 수 있습니다.
A가 실행되는 동안, 나는 10 초 (지연) 이후에 ExecutorService를 예약하여 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 작업이 시작된 경우에만, 적어도 한 번은 "실행"을 인쇄한다는 것을 의미합니다.
- 10 대 이전에 완료되면 아무것도 인쇄하지 않습니다.
- A가 10 초 이상이되면 5 초마다 "실행"을 인쇄 한 다음 A가 완료되면 "완료"합니다.
Schduled 내부에 부울 깃발을 사용하지 않고 어떻게 할 수 있습니까? runnable
. 내 서비스가 시작되었는지 확인하는 방법이 있습니까?
해결책
제휴하지 않습니다 StackOverflow