Сохранение таймера свинга после завершения основного метода

Я пытаюсь создать программу для выполнения простой задачи и выводить каждый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();
  }

который просто заканчивает выполнение немедленно. Я могу избежать проблемы, уложив текущий поток выполнения в спящий режимThread.currentThread().sleep(..), но это похоже на неудачную работу, и в конечном итоге будет конечным по продолжительности. Я также могу сделать время (правда), но я считаю, что это плохая практика.

Мой вопрос заключается в том, как получить желаемое постоянное поведение и есть ли лучший способ, чем использование таймеров Swing.

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос