Поскольку у таймера есть фоновый поток, который продолжает работать :
Каждый объект таймера соответствует
один фоновый поток, который
используется для выполнения всех таймера
задачи, последовательно. Таймер задач
должно завершиться быстро. Если таймер
задача занимает слишком много времени для выполнения,
он "затягивает" выполнение задачи таймера
нить. Это может, в свою очередь, задержать
выполнение последующих задач, которые
может "сгруппироваться" и выполнить быстро
правопреемство, когда (и если) нарушителя
задание наконец завершено.
Поскольку это фоновый поток, он продолжается до выхода из JVM или до его остановки.
Обновление: немного больше об этом. «Фоновый поток» - это то же самое, что и поток демона, названный по аналогии с процессом демона BSD. Если вы увидите javadocs на Thread , вы найдете:
Отмечает эту ветку как демон
поток или пользовательский поток. Ява
Виртуальная машина выходит, когда только
все потоки - это демон
резьб.
Когда ваш основной завершает работу, все пользовательские потоки останавливаются, оставляя только потоки демонов. Затем JVM выключается. Для хорошего времени - если коротко - звоните Thread.currentThread().setDaemon(true);
с основного.
Обновление: Ack. У меня было это почти право. Вы должны сделать таймер демоном во время строительства. (Это изменилось, или у меня просто произошел мозговой сбой?)
В любом случае, вот пример кода:
import java.util.*;
class Chatter extends TimerTask {
public void run(){
System.err.println("Timer run.");
}
}
public class TryThread {
public static void main(String[] argv){
// If argument is true, only runs a few times.
Timer t = new Timer(false);
t.schedule(new Chatter(), 1L, 1L);
return ;
}
}