[英]java timer won't work
为什么不起作用?
我希望它每秒打印一次。
谢谢。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class test2 {
public static void main(String[] args) {
Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("hello");
}
});
timer.start();
}
}
您的程序终止,计时器甚至无法运行一次。 当main方法终止时,程序终止,所有线程也终止。 这包括您的计时器线程。
请尝试以下操作:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class test2 {
public static void main(String[] args) {
Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("hello");
}
});
timer.start();
}
while (true) /* no operation */;
}
}
计时器可能在守护程序线程中启动,启动后,主线程立即结束。
一旦只剩下守护程序线程,JVM可能/必须终止。 因此,您需要保持主线程处于活动状态。 为了测试目的,一个简单的Thread.sleep(10000);
应该做得很好。
没有什么可以阻止您的代码在调用start
之后立即退出。 添加Thread.sleep(10000);
在timer.start();
您会看到消息打印。
因为您的程序将在主线程完成后立即退出,并且由于Timer在单独的线程上运行,所以将没有时间执行。 在main方法结束之前添加Thead.Sleep调用将执行您的代码。
您正在使用接口库( java.awt
)编写控制台应用程序。
尝试这个:
public static void main(String[] args) throws Exception {
while(true){
Thread.sleep(1000);
System.out.println("hello");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.