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();
|
}
|
}
|
}
|