2015-11-16 149 views
1

我有一種稱爲計時器的方法,每次用戶輸入內容時都會運行計時器,計時器計劃一分鐘,但如果用戶在一分鐘內輸入內容,我希望計時器取消然後重新召回,整個過程再次發生。我的方法如下:如何在java中停止計時器

輸入法

public static String run(){ 
    timer(); //runs everytime I call run() 
    String s = input.nextLine(); 
    return s; 
} 

定時器方法

public static void timer() { 
    TimerTask task = new TimerTask() { 
     public void run() { 
      System.out.println("Times up"); 
     } 
    }; 
    long delay = TimeUnit.MINUTES.toMillis(1); 
    Timer t = new Timer(); 
    t.schedule(task, delay); 
} 

方法run()的狀態越來越稱爲每次有人輸入東西,所以計時器不斷得到所謂但這並不能阻止以前的定時器,我想要定時器停止,然後回憶自己,以便問題不存在。任何人都知道方法?

回答

4

TimerTask類有一個名爲cancel()的方法,您可以調用該方法取消掛起的定時器。

在您的代碼中,您可能需要修改timer()函數以返回對新創建的對象的引用,以便稍後可以調用cancel()

+0

因此,如何使它取消,通過說t.cancel(); ? – user3450498

+0

@ user3450498 - Correct,t.cancel();將取消定時器。更多你可以參考java文檔:http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html#cancel() – vk239