Java计时器工作不正常

Java计时器工作不正常,java,timer,Java,Timer,我在控制台中只看到一次“正在工作…”消息。我想每秒钟看到一次“正在工作…”代码有什么问题?我的另一个问题是,我想每秒钟运行一次我自己的方法,但如何 对不起,我的英语不好。您需要在主线程中等待计时器启动。当所有非守护进程线程完成时,JVM将退出。运行main方法的线程实际上是唯一的非damon线程,因此您应该让它等待工作完成 更改您的主要方法如下: .... public class mainClass { public mainClass(){ Timer time =

我在控制台中只看到一次“正在工作…”消息。我想每秒钟看到一次“正在工作…”代码有什么问题?我的另一个问题是,我想每秒钟运行一次我自己的方法,但如何


对不起,我的英语不好。

您需要在主线程中等待计时器启动。当所有非守护进程线程完成时,JVM将退出。运行main方法的线程实际上是唯一的非damon线程,因此您应该让它等待工作完成

更改您的主要方法如下:

....

public class mainClass {
    public mainClass(){
        Timer time = new Timer();
        mainClass.calculate calculate = new mainClass.calculate();
        time.schedule(calculate, 1 * 1000);
    }

    public static void main(String[] args){
        new mainClass();
    }

    class calculate extends TimerTask{
        @Override
        public void run() {
            System.out.println("working..");

        }
    }
}
仅在第二个参数中的毫秒数之后运行TimerTask一次

要重复运行TimerTask,需要使用另一个
schedule()
重载,例如:

 public static void main(String[] args){
     new mainClass();
     Thread.sleep(2 * 1000); // wait longer than what the timer 
                             // should wait so you can see it firing.
 }
它计划从现在起1000毫秒执行任务,并每1000毫秒重复一次。

您需要使用:

time.schedule(calculate, 1000, 1000);

要计划计时器运行一次以上。

根据文档,计时器应为一次:

公共无效计划(TimerTask任务, 长延迟)计划在指定延迟后执行指定任务。参数:任务-要执行的任务 预定的。delay—任务开始之前的延迟(以毫秒为单位) 执行。抛出:IllegalArgumentException-如果延迟为负,或 延迟+系统。currentTimeMillis()为负。非法国家例外 -如果任务已计划或取消,或计时器已取消

你可能想打电话

公共无效计划(TimerTask任务, 久拖不决,, (长周期)


您正在使用的
Timer.schedule()
版本仅在延迟后执行一次任务。您需要使用使任务重复。

time.schedule(计算,0,1*1000);现在工作正常谢谢大家+1真棒快速准确的回复。。。尽管您应该使用最新的API规范。这仍然不能回答如何使任务重复的问题。从文档中可以看出:
默认情况下,任务执行线程不作为守护进程线程运行,因此它能够防止应用程序终止。
因此,这仅适用于计时器构造函数
计时器(boolean-isDaemon)
已被使用。是的..我很匆忙地写了这篇文章。很抱歉。你真的应该大写你的类。
zaman.schedule(calculate, 0, 1000);