1
下面的代碼按順序啓動並運行兩個定時器,我認爲第一個定時器會在第二個定時器初始化後停止運行。看起來,當一個定時器被賦予一個新的引用時,它的前一個引用只是繼續執行給定的任務?定時器是否會一直運行直到它的.cancel方法被調用
public class TimerTest {
private TimerTask timerTask;
private Timer timer;
private int counter = 0;
private final int delay = 1000;
public static void main(String[] args){
new TimerTest().runTimer();
new TimerTest().runTimer();
}
private void runTimer(){
timer = new Timer();
timerTask = new TimerTask() {
public void run() {
++counter;
System.out.println("output - "+counter);
}
};
timer.scheduleAtFixedRate(timerTask, delay, delay);
}
}
沒有提到第一個計時器了。當垃圾收集器工作時它會停止 –
@Armen:即使定時器不再被引用,它調度的任務仍然被定時器的後臺運行線程引用。它不會停止。 –
@Armen沒有第一個定時器不被開發者使用,但它仍然在內存中並且處於運行模式,直到它不能應用程序或者明確地取消定時器 – Pratik