gpt4 book ai didi

java - 为什么我的 Java 计时器在看似随机的迭代次数后停止?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:03 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com