1

我有以下代码

new Timer(300, this).start();

和这个

public void actionPerformed(ActionEvent e) {
   //do something
}

在同一个类中实现ActionListener.

问题是程序在代码actionPerformed有机会运行之前终止。至少我认为这是正在发生的事情!

当它无关时,我如何告诉java继续运行?

谢谢!

编辑:这是一个 javax.swing.Timer

4

2 回答 2

2

Timeruses daemon s -Thread它们不会阻止程序退出。

您使用的是,javax.swing.Timer但它看起来不像您在Swing环境中运行。

您需要使用 ajava.util.Timer并确保使用new Timer(false). 这将使用非 daemon 构建它,以Thread保持应用程序打开。

这意味着您需要调用cancel()才能Timer退出应用程序。

于 2013-03-24T17:02:19.287 回答
1

只要所有非守护线程都完成,Java 程序就会终止。因此,请保持主线程或至少一个非守护线程运行。

于 2013-03-24T17:01:55.517 回答