0

如何在单独的线程和给定的时间间隔中重复运行此类的实例?(正如您所注意到的,我使用的是 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);

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

4

2 回答 2

2

如果你使用 aScheduledExecutorService那么你只是执行Runnable对象,而不是TimerTask对象。

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

这节省了扩展的需要。

于 2013-04-17T06:49:09.457 回答
1

尝试

    Timer timer = new Timer();
    final Gate gates = Gate.fetchOne();
    timer.schedule(new TimerTask() {
        public void run() {
            gates.run();
        }
    }, 0, 1000);
于 2013-04-17T07:02:25.070 回答