簡體   English   中英

如何在java中每隔x秒執行一次方法

[英]How can I execute a method every x second for y time in java

我想每秒執行一次方法20次。

其實我有計時器

Timer timer = new Timer();
int begin = 0;
int timeInterval = 1000;

timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        //call the method
    }
}, begin, timeInterval);

如何以此間隔調用方法20次?

使用timer.schedule() ,並跟蹤計時器執行的次數,並在20次后停止計時器,使用timer.cancel()

java doc - 時間表

在指定的延遲之后開始,為重復的固定延遲執行安排指定的任務。 隨后的執行大約以規定的時間間隔進行,並以指定的時間段分隔。

在固定延遲執行中,每次執行都是相對於上一次執行的實際執行時間進行調度的。 如果執行因任何原因(例如垃圾收集或其他后台活動)而延遲,則后續執行也將延遲。 從長遠來看,執行頻率通常會略低於指定時間段的倒數(假設Object.wait(long)下的系統時鍾是准確的)。

固定延遲執行適用於需要“平滑”的重復活動。 換句話說,它適用於在短期內保持頻率比長期更准確的活動。 這包括大多數動畫任務,例如定期閃爍光標。 它還包括響應於人類輸入而執行常規活動的任務,例如只要按下鍵就自動重復一個字符。

參數:

 task - task to be scheduled. delay - delay in milliseconds before task is to be executed. period - time in milliseconds between successive task executions. 

Timer timer = new Timer();
int begin = 0;
int timeInterval = 1000;
timer.schedule(new TimerTask() {
  int counter = 0;
   @Override
   public void run() {
       //call the method
       counter++;
       if (counter >= 20){
         timer.cancel();
       }
   }
}, begin, timeInterval);

嘗試Executor服務。 你必須自己計算,你多久調用一次Callable並取消Timer。

如果它不符合您的要求,您可以遵循以下主題:

Java Timer在每t秒后調用n次函數

暫無
暫無

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

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