猿问

是否可以从单独的类中停止计时器?

我正在尝试重置 Timer 以避免有多个实例。为了实现这一点,我想从一个单独的类中停止 Timer,如下所示:


public void Timer() 

{

    Timer timer = new Timer(); 

    long interval = (1000) ;

    timer.schedule( new TimerTask() 

    {

        public void run() 

        {

            // code //       

        }

    }, 0, interval);         

}


public void Stop() 

{

    // stop Timer //

}

我觉得这可以通过终止 Timer(); 来实现。如果无法停止计时器,我将非常感谢向我展示如何最好地尽可能干净地终止课程。谢谢你。


宝慕林4294392
浏览 89回答 2
2回答

潇湘沐

Newtimer.javapublic class NewTimer{   public Timer timer;   public long interval;public NewTimer(){   if(instance == null){      timer = new Timer();       interval = (1000);    }}public void start() {    timer.schedule( new TimerTask()     {        public void run()         {            // code //               }    }, 0, interval);         }public void Stop() {    // stop Timer //}在另一个类上,您可以使用这个对象类。NewTimer newTimer = new NewTimer();//Start timernewTimer.start();if(newTimer != null){   //reinitialize}检查是否有计时器类的实例。如果是这样,您可以重新初始化它。

拉丁的传说

我设计了一个非常基本的解决方案:boolean stop;public void Timer() {    Timer timer = new Timer();     long interval = (1000) ;    timer.schedule( new TimerTask()     {        public void run()         {            if condition is met{                execute            }            else if(stop == true){                timer.cancel();            }               }    }, 0, interval);         }...stop = true;try {    Thread.sleep(2000);} catch (InterruptedException ex) {    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);}stop = false;Timer1();基本上,布尔值会停止计时器,给它 2 秒以确保没有重叠,然后设置回 false 以安全地重置计时器。
随时随地看视频慕课网APP

相关分类

Java
我要回答