2015-11-16 98 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