下面的代码按顺序启动并运行两个计时器,我原本以为第一个计时器会在第二个计时器初始化后停止运行。似乎当给定一个新的引用时,它的先前引用只是继续执行给定的任务?
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);
}
}
答案 0 :(得分:2)
是。为变量分配对象引用不会修改对象的状态。对象是,BTW,无法知道它是否被分配给0,1或几个变量。
此外,请注意第二个计时器被分配给与第一个不同的变量,因为您实例化了两个TimerTest对象,每个对象都有自己的计时器字段。