根据我的要求,我必须在一段时间后执行一些特定的代码。做同样的事情我选择了ScheduledExecutorService.scheduleWithFixedDelay(runnable, 0, 5, TimeUnit.SECONDS)
,它对我来说很好。但是根据我的另一个要求,中提到的时间fixedDelay
应该可以在运行时配置。意味着,当前总延迟为 5 秒,但如果用户愿意,后者可以将时间更改为 60 秒,并且在运行时fixedDelay
将在 60 秒后运行。任何帮助都是不言而喻的。
请看代码:
static int i = 0;
static ScheduledExecutorService executor;
static Runnable runnable;
static ScheduledFuture<?> future;
public static void main(String args[]) {
executor = Executors
.newScheduledThreadPool(1);
runnable = new Runnable() {
@Override
public void run() {
System.out.println("Inside runnable" + i++);
changeDelay();
}
};
future =
executor.scheduleWithFixedDelay(runnable, 0, 5, TimeUnit.SECONDS);
}
public static void changeDelay() {
future.cancel(false);
future = executor.scheduleWithFixedDelay(runnable, 0, 10, TimeUnit.SECONDS);
}
这里我使用了changeDelay方法来改变延迟时间。但它不起作用。