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