package me.zhyd.oauth.cache; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; /** * 缓存调度器 * * @author yadong.zhang (yadong.zhang0415(a)gmail.com) * @since 1.9.3 */ public enum AuthCacheScheduler { /** * 当前实例 */ INSTANCE; private AtomicInteger cacheTaskNumber = new AtomicInteger(1); private ScheduledExecutorService scheduler; AuthCacheScheduler() { create(); } private void create() { this.shutdown(); this.scheduler = new ScheduledThreadPoolExecutor(10, r -> new Thread(r, String.format("JustAuth-Task-%s", cacheTaskNumber.getAndIncrement()))); } public void shutdown() { if (null != scheduler) { this.scheduler.shutdown(); } } public void schedule(Runnable task, long delay) { this.scheduler.scheduleAtFixedRate(task, delay, delay, TimeUnit.MILLISECONDS); } }