2015-04-21 31 views
0

我想爲多個請求運行定時器。如果我收到一個請求,我將在中間運行1000ms的計時器,如果我得到另一個需要更新計時器的請求。如果我沒有收到1000ms的任何請求,我需要退出該過程。如何創建一個可以在Java中多次使用的定時器

如何實現這樣一個計時器?我無法使用Timer任務執行操作。

+0

你有什麼嘗試到目前爲止?你能粘貼你嘗試過的代碼嗎?它會幫助社區幫助你。 – Welshboy

+0

顯示至少要執行的代碼框架,它不能是'TimerTask'。 – SubOptimal

+0

我嘗試使用Timer Task,代碼片段在下面分享。 – user3201343

回答

0

您可以使用ScheduledExecutorService的

樣品波紋管:

import java.util.concurrent.Executors; 
import java.util.concurrent.ScheduledExecutorService; 
import java.util.concurrent.ScheduledFuture; 
import java.util.concurrent.TimeUnit; 

public class A { 

public static void main(String[] args) { 
    Runnable terminate = new Runnable() { 
     @Override 
     public void run() { 
      System.out.println("Terminate task executed"); 
     } 
    }; 
    ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor(); 
    ScheduledFuture<?> futureTask = timer.schedule(terminate, 1, TimeUnit.SECONDS); 
    futureTask.cancel(true); 
    System.out.println("Timer Canceled"); 
    futureTask = timer.schedule(terminate, 1, TimeUnit.SECONDS); 
    futureTask.cancel(true); 
    System.out.println("Timer Canceled"); 
    } 

} 

如果你運行它,你會看到終止任務永遠不會運行,因爲它是在1秒之前取消通過

+0

謝謝......我明白了。 – user3201343

相關問題