com.github.jparkie.promise.Schedulers Maven / Gradle / Ivy
package com.github.jparkie.promise;
import java.util.concurrent.ExecutorService;
/**
* A companion class for {@link Scheduler}.
*
* Provides various methods for accessing schedulers.
*/
public final class Schedulers {
private Schedulers() throws IllegalAccessException {
throw new IllegalAccessException();
}
public static Scheduler newSimpleScheduler() {
return new SimpleScheduler();
}
public static Scheduler newExecutorServiceScheduler(ExecutorService executorService) {
return new ExecutorServiceScheduler(executorService);
}
private static class SimpleScheduler implements Scheduler {
private SimpleScheduler() {
// Do Nothing.
}
@Override
public void schedule(Action action, Promise promise) {
action.call(promise);
}
@Override
public void cancel(Action action) {
action.cancel();
}
}
private static class ExecutorServiceScheduler implements Scheduler {
private final ExecutorService executorService;
ExecutorServiceScheduler(ExecutorService executorService) {
this.executorService = executorService;
}
@Override
public void schedule(final Action action, final Promise promise) {
executorService.execute(new Runnable() {
@Override
public void run() {
action.call(promise);
}
});
}
@Override
public void cancel(final Action action) {
executorService.execute(new Runnable() {
@Override
public void run() {
action.cancel();
}
});
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy