簡體   English   中英

在Java中完成前一個任務之后,以固定的時間安排定期任務

[英]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分鍾)之后運行下一個線程,如果當前線程未完成,則在當前線程完成后立即運行下一個線程。
我需要下一個線程在當前線程完成一段時間運行。
我怎樣才能做到這一點?

使用ScheduledExecutorServicescheduleWithFixedDelay方法可以做到這一點。 由於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.

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