为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

宝慕林4294392 2022-07-20 16:23:55
我正在尝试重置 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(); 来实现。如果无法停止计时器,我将非常感谢向我展示如何最好地尽可能干净地终止课程。谢谢你。
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

Newtimer.java


public 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 timer

newTimer.start();


if(newTimer != null){

   //reinitialize

}

检查是否有计时器类的实例。如果是这样,您可以重新初始化它。


查看完整回答
反对 回复 2022-07-20
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我设计了一个非常基本的解决方案:


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 以安全地重置计时器。


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号