我正在尝试实现一个永远运行的Swing计时器(或直到它被告知停止)。我不知道为什么,但是下面的代码将执行大约8秒然后自行停止。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class SwingTimer {
private int count;
public SwingTimer() {
count = 0;
final int delay = 1000;
ActionListener l = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Count: " + (++count));
}
};
new Timer(delay,l).start();
try {
Thread.sleep(2000);
} catch(InterruptedException e) {
System.out.println(e);
}
}
public static void main(String[] args) {
new SwingTimer();
}
}
然而,在我下载的一个例子中,代码几乎与上面的代码完全相同,只是延迟是500毫秒而不是1000,并且该计时器将运行一段看似无限的时间。当我在该示例中将500更改为1000时,它的执行方式与上面的代码相同。
有谁知道为什么会发生这种情况以及如何解决它以使其无限期运行?