class不是抽象的,不会覆盖java.util.timertask中的抽象方法run()

时间:2010-11-17 17:07:39

标签: java timer

我正在尝试使用计时器定期重复一个功能。现在我必须将输入传递给函数,但是我得到错误“ activity 不是抽象的,并且不会覆盖java.util中的抽象方法run() .timertask ”。

将值传递给定时器调用的嵌套函数的正确做法是什么?在线或在java文档上的示例太模糊了。

下面是代码的骨架。任何的想法?也是一个文档的链接,可以更好地解释这个问题。

谢谢!

import java.util.*;

public class className {
    Timer timer;

    public static void main(String args[]) {
        //declarations...
        initialiseInputs(args);
        new executePeriodicActivities(milliseconds); // milliseconds are in "args"
    }

    public void executePeriodicActivities(int seconds) {
        timer = new Timer();
        timer.scheduleAtFixedRate(new activity(args), 0, milliseconds);
    }

    class activity extends TimerTask { //error!
        public void run() {
            function(args)
            if(condition(args)) {timer.cancel();}
        }
    }
}

2 个答案:

答案 0 :(得分:1)

activity类中添加一个带有long参数的构造函数。然后,您可以在run()方法中使用该值。

class activity extends TimerTask { 
    private long milis;
    public activity(long milis) {
        this.milis = milis;
    }
    public void run() {
        function(args)
        if(condition(args)) {timer.cancel();}
    }
}

答案 1 :(得分:0)

使用匿名内部类:

import java.util.*;

public class className {
    Timer timer;

    public static void main(String args[]) {
        //declarations...
        executePeriodicActivities(milliseconds, args); // milliseconds are in "args"
    }

    public static void executePeriodicActivities(int seconds, String[] args) {
        timer = new Timer();
        timer.scheduleAtFixedRate(new TimeTask() 
                                      {public void run() {
                                                  function(args)
                                                  if(condition(args)) {timer.cancel();}
                                                  }
                                       }, 0, milliseconds);
    }

}

或类似的东西