Пример Java TimerTask - PullRequest
       17

Пример Java TimerTask

0 голосов
/ 15 ноября 2018

Мне нужно выполнять поток через регулярные промежутки времени.Я использую метод timerTask в моей Java-программе

public class StudentDTO  extends  TimerTask{
@Override
public void run(){  
    System.out.println("hi");
}
        public static void main(String[] args){ 

    StudentDTO t1=new StudentDTO();  
    Timer timer = new Timer(true);
    timer.scheduleAtFixedRate(t1, 0, 10000);
    System.out.println("start");

     try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

}

}

, когда я выполнил этот код, я получил ответ как

start hi hi

и программа будет прекращена.Я должен запускать поток каждые 10 секунд. Пожалуйста, предложите мне решение

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Виртуальная машина Java завершается, когда все запущенные потоки являются потоками демона.

Так что измените на

 Timer timer = new Timer();

Это создаст пользовательскую тему

0 голосов
/ 15 ноября 2018

Вы можете запускать программу каждые 10 секунд двумя способами.

  1. Таймер таймера = новый таймер ();
  2. Изменяя время, которое у вас есть длянить спать.Он должен быть больше или равен интервалу, который вы хотите запланировать для своей задачи. Для экземпляра:

            try {
                Thread.sleep(12000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
0 голосов
/ 15 ноября 2018

Измените new Timer(true) на new Timer(), иначе это поток демона, и приложение умирает при выходе из основного режима

...