package com.moon.server.helper; import com.moon.server.entity.all.StaticData; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @SuppressWarnings("ALL") public class AsyncHelper { private final static int OPERATE_DELAY_TIME = 10; // private final static AsyncHelper INSTANCE = new AsyncHelper(); private final static Log log = LogFactory.getLog(AsyncHelper.class); private ScheduledExecutorService executor = SpringContextHelper.getBean("scheduledExecutorService"); public AsyncHelper() { } public void execute(TimerTask task) { executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS); } public void shutdown() { shutdownAndAwaitTermination(executor); } public static void shutdownAndAwaitTermination(ExecutorService pool) { try { if (null == pool || pool.isShutdown()) { return; } pool.shutdown(); if (!pool.awaitTermination(StaticData.I120, TimeUnit.SECONDS)) { pool.shutdownNow(); } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } } }