每次方法运行时更改定时器的延迟而不创建新定时器

时间:2016-05-14 18:02:21

标签: java timer

所以基本上我的程序中有一个计时器方法,它使用整数z作为参数以及计时器本身的延迟。但每次我运行此方法时,它会创建一个新的计时器而不删除旧的计时器。所以我决定添加一个if else块,使它只在第一次创建一个计时器,但现在它说它可能没有被初始化,因为它是在if else块中初始化的。有人能帮我吗?

public void timer(int z) {
    int count = 0;
    Timer tester;
    z = (60000 / z);
    decide = true;
    ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {noteDecider();}
    };
    if(count == 0) {
        tester = new Timer(z, taskPerformer);
        tester.start();
    }
    else {
        tester.setDelay(z);
        tester.start();
    }
    count++; 
}

1 个答案:

答案 0 :(得分:0)

我想说如果你担心优化你的代码,你应该考虑优化你的Timer类。就像在Timer本身内部移动ActionListener对象一样。你的所有timer(int z)方法都在尝试使用一个对象来跟踪时间而不是管理Timer对象的生命周期。