在Java中的特定时间间隔后安排任务

时间:2011-09-28 15:05:58

标签: java scheduled-tasks

我有一个班级

class A {
     int a=0;
     public int getVal() {
         return a;
     }
}

我要定期执行函数getVal。我如何从另一个班级b做到这一点?感谢。

4 个答案:

答案 0 :(得分:5)

旧方式

java.util.Timer


新(和首选)方式

java.util.concurrent.Executors


<强>实施

更具体地说,使用ScheduledExecutorService类。

答案 1 :(得分:3)

java.util.Timer的各种潜在问题列于&#34; Java Concurrency in Practice。&#34;的第6.2.5节中。例如:

    如果Timer花费的时间太长,
  • TimerTask表现不佳。
  • 如果Timer引发未经检查的异常,则
  • TimerTask行为不佳。

该书的作者得出结论:&#34;没有理由在Java 5.0或更高版本中使用Timer。&#34;

相反,他们建议使用ScheduledExecutorService。您可以通过ScheduledThreadPoolExecutor构造函数或newScheduledThreadPool中的Executors工厂方法构建一个。后一种选择更好。

答案 2 :(得分:1)

答案 3 :(得分:1)

只需看一下java中的Threads。你可以使这个类运行,并定期执行该函数,并使用sleep()函数生成延迟。否则,您可以使调用函数runnable。