我正在尝试创建一个程序来执行一个简单的任务并每 x
秒产生一个输出。我还希望程序一直运行,直到我决定手动关闭程序。
我一直在尝试使用 Swing 计时器来实现这一点,因为我认为这是最好的方法。问题是我不确定如何在 main 方法完成执行后让程序继续运行。所以例如我有:
static ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
//do stuff
} catch (Exception e) {
e.printStackTrace();
}
}
};
public static void main(String[] args) throws Exception{
Timer timer = new Timer(3000, taskPerformer);
timer.start();
}
立即结束执行。我可以通过让当前执行线程 hibernate Thread.currentThread().sleep(..)
来避免这个问题,但这感觉像是一个拙劣的工作,并且最终会在持续时间内有限。我也可以做 while(true),但我认为这是不好的做法。
我的问题是如何获得所需的持久性行为,以及是否有比使用 Swing 计时器更好的方法。
谢谢。
最佳答案
只要 EDT 处于 Activity 状态,Swing 计时器就会保持 Activity 状态,这通常是通过让 Swing GUI 存在并可见来实现的(这会创建一个非守护线程,该线程一直持续到 GUI 退出)。如果不需要 Swing GUI,则不要使用 Swing Timer。也许改为使用 java.util.Timer,并且在您给出命令之前不要退出 main 方法(无论您打算这样做)。
关于java - 主方法完成后的 Swing 计时器持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641236/