私の要件によれば、一定期間後に特定のコードを実行する必要があります。私が選んだの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 メソッドを使用して遅延時間を変更しています。しかし、それは機能していません。