为什么我的java计时器在看似随机的迭代次数后停止?
我正在尝试创建一个简单的java程序,它将无限期运行并每秒输出一个数字。我相信我的代码应该做到这一点;但是,它在变量i到达2、3或4后停止。随机。大多数时候它都会达到3。我不认为程序停止是基于I的,但我可能忽略了一些东西 这个程序所需要做的就是用定时器吐出第二次计数。我觉得我的代码可能有点太复杂了,所以如果我太难了,请告诉我为什么我的java计时器在看似随机的迭代次数后停止?,java,timer,Java,Timer,我正在尝试创建一个简单的java程序,它将无限期运行并每秒输出一个数字。我相信我的代码应该做到这一点;但是,它在变量i到达2、3或4后停止。随机。大多数时候它都会达到3。我不认为程序停止是基于I的,但我可能忽略了一些东西 这个程序所需要做的就是用定时器吐出第二次计数。我觉得我的代码可能有点太复杂了,所以如果我太难了,请告诉我 package testing; import java.awt.event.ActionEvent; import java.awt.event.ActionListe
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**
}
publicstaticvoidmain(字符串参数[]){
SwingUtilities.invokeLater(新的Runnable()
{
@凌驾
公开募捐
{
驱动程序d=新驱动程序();
}
});
对于(;;);//可能相关:这真的很有趣。我从来没有想过。谢谢!解释得很好!当“1个新问题”图标出现时,我实际上正在键入几乎完全相同的东西哈哈!快告诉我:感谢解释。现在完全有意义了。(程序工作!)不过有一个问题,你有没有因为什么原因给新司机起名字?是的..ide发出警告:)(不过没必要)