Java在计时器运行之前终止

时间:2013-03-24 16:56:34

标签: java multithreading swing timer

我有以下代码

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

和这个

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

在实现ActionListener的同一个类中。

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

如果没有任何事情可以告诉java继续运行?

谢谢!

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

2 个答案:

答案 0 :(得分:2)

Timer使用守护进程Thread - 它们不会阻止程序退出。

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

您需要使用java.util.Timer,并确保使用new Timer(false)创建它。这将使用非守护进程Thread来构建它,这将使应用程序保持打开状态。

这意味着您需要致电cancel() Timer以便申请退出。

答案 1 :(得分:1)

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