我有以下代码
new Timer(300, this).start();
和这个
public void actionPerformed(ActionEvent e) {
//do something
}
在同一个类中实现ActionListener
.
问题是程序在代码actionPerformed
有机会运行之前终止。至少我认为这是正在发生的事情!
当它无关时,我如何告诉java继续运行?
谢谢!
编辑:这是一个 javax.swing.Timer
我有以下代码
new Timer(300, this).start();
和这个
public void actionPerformed(ActionEvent e) {
//do something
}
在同一个类中实现ActionListener
.
问题是程序在代码actionPerformed
有机会运行之前终止。至少我认为这是正在发生的事情!
当它无关时,我如何告诉java继续运行?
谢谢!
编辑:这是一个 javax.swing.Timer
Timer
uses daemon s -Thread
它们不会阻止程序退出。
您使用的是,javax.swing.Timer
但它看起来不像您在Swing
环境中运行。
您需要使用 ajava.util.Timer
并确保使用new Timer(false)
. 这将使用非 daemon 构建它,以Thread
保持应用程序打开。
这意味着您需要调用cancel()
才能Timer
退出应用程序。
只要所有非守护线程都完成,Java 程序就会终止。因此,请保持主线程或至少一个非守护线程运行。