我正在尝试创建一个简单的java程序,它将无限期地运行并每秒输出一个数字。我相信我的代码应该这样做;然而,它在变量i变为2,3或4之后停止。随机。它大部分时间都达到了3.我不认为程序停止是基于我的,但我可能会忽视它。
所有这个程序需要做的是使用计时器吐出第二个计数。我觉得我的代码可能有点过于复杂,所以如果我的代码太难,请告诉我。
package testing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class driver {
static int delay = 1000; //milliseconds
private Timer timer;
int i = 0;
public driver(){
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println(i);
i++;
}
};
timer = new Timer(delay, taskPerformer);
timer.setInitialDelay(0);
timer.start();
}
public static void main(String args[]){
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new driver();
}
});
}
}
答案 0 :(得分:4)
你的计划中的一切都是正确的,但只有一个。
您的程序启动(显然从main())启动计时器,计时器方法启动每秒显示时间/数字的过程,然后主线程死亡!导致完成程序执行。
所以为了避免这种情况,你只需要保持主线程忙。
这是最简单的方法:
public static void main(String args[]){
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
driver d = new driver();
}
});
for(;;); // <-- **Check this out :D**
}