[英]schedule periodic task at a fixed duration after previous one finished in java
我編寫了一個使用Timer.scheduleAtFixedRate
定期運行線程的應用程序,如下所示:
this.ExtractorTimer=new Timer();
this.ExtractorTimer.scheduleAtFixedRate(new java.util.TimerTask() {
public void run() {
...
}
},0, 120000);
這恰好在特定時間(例如2分鍾)之后運行下一個線程,如果當前線程未完成,則在當前線程完成后立即運行下一個線程。
我需要下一個線程在當前線程完成一段時間后運行。
我怎樣才能做到這一點?
使用ScheduledExecutorService
的scheduleWithFixedDelay
方法可以做到這一點。 由於Executors
工廠類,您可以獲得此類執行器服務的實例。 此類是Timer的替代品,它有一些缺陷。
您可以在任務完成后安排下一次執行,而不是使用scheduleAtFixedRate
:
public void initTimer() {
Timer timer = new Timer();
scheduleTask(timer);
}
private void scheduleTask(final Timer timer) {
timer.schedule(new TimerTask() {
public void run() {
// perform task here
scheduleTask(timer);
}
}, 120000);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.