我不明白为什么在下面的代码中使用这样的计时器变量。
问题一:在startTimer()和stopTimer()中,都有一个局部变量aTimer要在对定时器的操作之前使用,目的是什么?
问题2:在stopTimer()中,timer会被赋值为null,所以如果timer不为null,说明这个timer已经被创建,当startTimer()被调用时,timer不会被再次创建。这是检查计时器是否正在运行的最佳做法吗?通过将 null 分配给计时器,PMD 还报告“NullAssignment”违规
private Timer timer;
private void startTimer() {
if (timer == null) {
Timer aTimer = timerFactory.createTimer(100000, null);
aTimer.setListener(this);
timer = aTimer;
}
}
private void stopTimer() {
if (timer != null) {
Timer aTimer = timer;
timer = null;
aTimer.cancel();
aTimer.setListener(null);
}
}
public void start() {
synchronized(..) {
startTimer();
}
}
public void stop() {
synchronized(..) {
stopTimer();
}
}