安排常规任务而不扩展TimerTask?

时间:2013-04-17 06:45:03

标签: java multithreading java-ee timer runnable

如何在不同的线程和给定的时间间隔内重复运行此类的实例? (正如您已经注意到我使用的是Java 2 EE)。

public class Gate extends AbsDBObject<Gate> implements Runnable{
  public void Run(){
    //Something
  }
}

我之前通过Gate课程扩展TimerTask课程并使用Timer来完成此操作:

Timer timer = new Timer();
Gate gates = Gate.fetchOne();
timer.schedule(gate, 0, 1000);

但在这种情况下,我不能扩展任何其他类。我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果您使用ScheduledExecutorService,则只需执行Runnable个对象,而不是TimerTask个对象。

ScheduledExecutorService executorService = 
    new ScheduledThreadPoolExecutor(corePoolSize);
Gate gate = Gate.fetchOne();
executorService.scheduleAtFixedRate(gate, 0, 1, TimeUnit.SECONDS);

这节省了扩展的需要。

答案 1 :(得分:1)

    Timer timer = new Timer();
    final Gate gates = Gate.fetchOne();
    timer.schedule(new TimerTask() {
        public void run() {
            gates.run();
        }
    }, 0, 1000);