我正在尝试创建一个简单的 java 程序,它将无限期运行并每秒输出一个数字。我相信我的代码应该这样做;但是,它会在变量 i 达到 2、3 或 4 后停止。随机。大多数时候它会达到 3。我不认为程序停止是基于 i 的,但我可能忽略了一些东西。
这个程序需要做的就是使用计时器吐出第二个计数。我觉得我的代码可能有点过于复杂,所以如果我做得太难了,请告诉我。
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();
}
});
}
}
最佳答案
在你的程序中一切都恰到好处,只有一个。
您的程序启动(显然是从 main() 开始),它启动了计时器,计时器方法启动了每秒显示时间/数字的过程,之后,主线程死亡!导致程序执行完成。
因此,为了避免这种情况,您只需让主线程保持忙碌即可。
这是最简单的方法:
public static void main(String args[]){
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
driver d = new driver();
}
});
for(;;); // <-- **Check this out :D**
}
关于java - 为什么我的 Java 计时器在看似随机的迭代次数后停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716501/