开发者

Swing timer persistence after main method finishes

I am trying to create a program to perform a simple task and produce an output every x seconds. I also want the program to run until I decide to manually close the program.

I have been attempting to implement this using a Swing timer, as I believe this is the best way. The problem is I'm not sure how to keep the program going once the main method has finished executing. So for example I have:

 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();
  }

which just finishes execution immediately. I can dodge the problem by putting the current thread of execution to sleep Thread.currentThread().sleep(..), but this feels like a botch job, and will be ultimately be finite in duration. I can also do while(true), but I believe this is bad practice.

My question is how to get the desired persistence behavior, and if there is a better way than using Swing timers.

Thanks.


A Swing Timer will stay alive as long as the EDT is alive, usually this is done by having a Swing GUI present and visible (this creates a non-daemon thread that persists until the GUI exits). If you don't need a Swing GUI, then don't use a Swing Timer. Perhaps instead use a java.util.Timer, and don't exit the main method til you give the word (however you plan to do that).


Use java.util.Timer instead. The associated thread will not run as a daemon.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜