计时器是否会一直运行,直到调用了.cancel方法

时间:2011-09-01 10:07:18

标签: java

下面的代码按顺序启动并运行两个计时器,我原本以为第一个计时器会在第二个计时器初始化后停止运行。似乎当给定一个新的引用时,它的先前引用只是继续执行给定的任务?

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);
    }

}

1 个答案:

答案 0 :(得分:2)

是。为变量分配对象引用不会修改对象的状态。对象是,BTW,无法知道它是否被分配给0,1或几个变量。

此外,请注意第二个计时器被分配给与第一个不同的变量,因为您实例化了两个TimerTest对象,每个对象都有自己的计时器字段。