当前位置: 首页 > 面试题库 >

Java中的重启计时器

左凯定
2023-03-14
问题内容

我想做一个计时器,它会在发生某些事情时重新启动:

public static Timer timer;

public myTimer(long MAC, String ipAddress){
    timer = new Timer();
    timer.schedule(timerTask, 120000); 
}

public void update(){
    timer.cancel();
    timer = new Timer();
    timer.schedule(timerTask, 120000); 
}

创建新时间表时出现问题,出现以下错误:

java.lang.IllegalStateException: Task already scheduled or cancelled
    at java.util.Timer.sched(Timer.java:358)
    at java.util.Timer.schedule(Timer.java:170)
    at spb.keepAliveTimer.update(keepAliveTimer.java:37)
    at spb.keepAlive.update(keepAlive.java:58)
    at spb.receptor.keepAlive(receptor.java:475)
    at spb.receptor.run(receptor.java:118)
    at java.lang.Thread.run(Thread.java:662)

我不知道该怎么办!谢谢!


问题答案:

这对我来说很好用…您可以粘贴完整的代码和错误吗?

package snippet;

import java.util.Timer;
import java.util.TimerTask;

public class Main {
    public static Timer timer;

    public static void main(String[] args) {
        Main main = new Main();
        main.myTimer(123, "127.0.0.1");


    }

    public void myTimer(final long MAC, final String ipAddress) {
        TimerTask timerTask = new TimerTask() {

            @Override
            public void run() {
                System.out.println("MAC: " + MAC + "ipAddress:" + ipAddress);
                update();
            }
        };
        timer = new Timer();
        timer.schedule(timerTask, 1000);

    }

    public void update() {
        TimerTask timerTask = new TimerTask() {

            @Override
            public void run() {
                System.out.println("Updated timer");

            }
        };
        timer.cancel();
        timer = new Timer();
        timer.schedule(timerTask, 2000);
    }
}

输出:

 MAC:123ipAddress:127.0.0.1
 更新计时器


 类似资料:
  • 我编码一个tempmute命令,我想让机器人在JDA重新启动后恢复计时器,如何做到这一点?

  • 问题内容: 我试图在我的EntryPoint中使用Java计时器: 但是当尝试编译时,我得到:没有源代码可用于type ;您忘了继承必需的模块吗? 我该如何解决此错误? 问题答案: 如果您使用的是Libgdx,则可以使用libgdx 基础结构 来计划将来运行的工作: 这样,您可以在独立于平台的代码中安排计时器。(特定于GWT的解决方案仅在项目的平台相关部分中起作用。)

  • 我想在Java做天文台;只是为了游戏。 我在Java API中找到了这个类,但我不知道如何使用它。 我尝试这个代码来创建天文台的对象,编译器说“我找不到简单的“天文台”。我想是因为我需要导入一个指定的librery来为天文台创建一个对象。 我的问题是创建类计时器的对象;我知道如何利用它来实现我的目标。 同样,我的问题是如何创建类天文台的对象,只是它。我需要指定的librery吗?是不是天文台类,我

  • 嗨,我从以下网站获得了倒计时代码: https://codepen.io/SitePoint/pen/MwNPVq, 并已修改为: 我所做的更改是,我检查了分钟和秒是否都为0,然后变量“deadline”应该用新时间更新。倒计时计时器工作正常,但当它达到0:0时,它进入该功能,一切停止。

  • 我有一个小游戏,当用户按下暂停按钮时,我需要暂停计时器,然后恢复计时器,并在用户按下恢复按钮时继续增加秒数。我研究了很多,我尝试了不同的解决方案,但没有一个对我有效。你能帮我实现这个功能吗?下面是我的代码: 谢谢你读这篇文章。

  • 问题内容: 我想要一个每2秒更改一次自己的私有变量的类。我知道如果我做类似的事情 它会在2秒后执行,是否有办法告诉它每2秒执行一次操作,或者,如果我将其放入 能行吗 在旁注中,确切的作用是什么? 问题答案: 使用安排它每两秒钟复发: 从指定的时间开始计划指定的任务以重复执行固定速率。随后的执行大约每隔固定的时间间隔执行一次,并间隔指定的时间。 从javadoc中获取: 终止此计时器,放弃任何当前计