Прежде всего, вам необходимо удалить параметр из конструктора Timer.Передав true
, вы указываете, что поток является «демоном»: поток демона не препятствует выходу JVM, когда все потоки, не являющиеся демонами, завершены.
Во-вторых, вы устанавливаете параметр задержки в200 минутЭто означает, что вам нужно подождать 200 минут, прежде чем программа начнет повторять печать.Ниже приведена рабочая версия:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("abc");
}
}, 100 , 1000);
Если вы установите таймер в качестве демона, JVM увидит, что активных потоков нет, и просто остановит завершение вашей программы, когда инструкция таймера планирования закончилась.Но если вы удалите параметр «true» из конструктора Timer, он будет виден как активный поток, это означает, что программа не остановится, пока этот таймер не завершит свою работу.
Ниже код показывает эту ситуацию.Таймер будет работать в течение 10 секунд, потому что вы спите основной поток, а таймер (deamon) будет работать до тех пор, пока этот сон не закончится.
Timer timer = new Timer(true);
timer.schedule(new TimerTask() {
public void run() {
System.out.println("abc");
}
}, 100 , 1000);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}