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

Woz*_*zza 5 java swing timer

我正在尝试创建一个程序来执行一个简单的任务,并每秒产生一个输出x.我还希望程序运行,直到我决定手动关闭程序.

我一直在尝试使用Swing计时器来实现它,因为我认为这是最好的方法.问题是我不确定一旦主方法执行完毕后如何保持程序运行.所以我举例说:

 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();
  }
Run Code Online (Sandbox Code Playgroud)

刚刚完成执行.我可以通过将当前执行线程置于睡眠状态来避免这个问题Thread.currentThread().sleep(..),但这感觉就像一个拙劣的工作,并且最终将持续有限.我也可以做(真的),但我相信这是不好的做法.

我的问题是如何获得所需的持久性行为,以及是否有比使用Swing计时器更好的方法.

谢谢.

Hov*_*els 6

只要EDT处于活动状态,Swing Timer就会保持活动状态,通常这是通过让Swing GUI存在并且可见(这会创建一个非守护程序线程,直到GUI退出).如果您不需要Swing GUI,则不要使用Swing Timer.也许改为使用java.util.Timer,并且不要退出main方法直到你给出这个词(但是你打算这样做).