2 * Copyright 2017-present Open Networking Foundation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package io.atomix.utils.concurrent;
18 import java.time.Duration;
19 import java.util.concurrent.TimeUnit;
24 public interface Scheduler {
27 * Schedules a runnable after a delay.
29 * @param delay the delay after which to run the callback
30 * @param timeUnit the time unit
31 * @param callback the callback to run
32 * @return the scheduled callback
34 default Scheduled schedule(long delay, TimeUnit timeUnit, Runnable callback) {
35 return schedule(Duration.ofMillis(timeUnit.toMillis(delay)), callback);
39 * Schedules a runnable after a delay.
41 * @param delay the delay after which to run the callback
42 * @param callback the callback to run
43 * @return the scheduled callback
45 Scheduled schedule(Duration delay, Runnable callback);
48 * Schedules a runnable at a fixed rate.
50 * @param initialDelay the initial delay
51 * @param interval the interval at which to run the callback
52 * @param timeUnit the time unit
53 * @param callback the callback to run
54 * @return the scheduled callback
56 default Scheduled schedule(long initialDelay, long interval, TimeUnit timeUnit, Runnable callback) {
57 return schedule(Duration.ofMillis(timeUnit.toMillis(initialDelay)), Duration.ofMillis(timeUnit.toMillis(interval)), callback);
61 * Schedules a runnable at a fixed rate.
63 * @param initialDelay the initial delay
64 * @param interval the interval at which to run the callback
65 * @param callback the callback to run
66 * @return the scheduled callback
68 Scheduled schedule(Duration initialDelay, Duration interval, Runnable callback);