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);