java - 主方法完成后的 Swing 计时器持久性

标签 java swing timer

我正在尝试创建一个程序来执行一个简单的任务并每 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/

相关文章:

java - 终止java中的线程

java - 使用扫描仪添加两个文件中的值不起作用

java - JFrame添加滚动条

java - Android 服务完全破坏了设备的性能?

java - Lucene 3.4 覆盖索引中的文档

java - BigDecimal 除法抛出 ArithmeticException : Division by zero even when i check against it

java - 组合图形对象 Jswing

java - 查询在 java 中创建单独的线程?

android - 关于定时器和 Action ...帮助!!----(安卓应用程序)

java - Java 中的循环倒数计时器