如何更新AbstractScheduledService中的延迟

时间:2014-05-15 13:52:46

标签: java service guava scheduler

我正在将myava实现到myApp中的模块中,我很难理解AbstractScheduledService的工作原理,我的目标是制作一个不时运行的服务,但我希望通过代码,设置在不同的时间运行间隔。 所以我的问题是:如何更新迭代之间的延迟时间间隔?

我的代码到目前为止

public class Service extends AbstractScheduledService {


public String id;
private int timeInterval;
private TimeUnit unit;
public boolean keepAsking;

/**
 *
 * @param newTimeInterval
 * @param newTimeUnit
 */
public void pauseAndUpdate(int newTimeInterval, TimeUnit newTimeUnit) throws Exception {
    this.shutDown();
    timeInterval = newTimeInterval;
    unit = newTimeUnit;
    keepAsking = true;
    this.startAndWait();
}

protected Scheduler scheduler() {
    System.out.println("Scheduling : "+ timeInterval + unit);
    return Scheduler.newFixedRateSchedule(0, timeInterval, unit);
}

public Service(int timeInterval,TimeUnit unit){
    super();
    id = "XPTO";
    this.timeInterval = timeInterval;
    this.unit = unit;
    keepAsking = true;
}

public void pauseAndUpdate(int newTimeInterval) throws Exception {

    pauseAndUpdate(newTimeInterval,this.unit);

}

@Override
protected void runOneIteration() throws Exception {
    System.out.println("Running");
    if(!keepAsking) {
        stop();
    }
}

1 个答案:

答案 0 :(得分:0)

听起来您似乎想要更改scheduler()方法以返回CustomScheduler。在每次迭代之后,服务将在下一次迭代之前向调度程序询问delay