All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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