记录一下线程池工具类:
/**
* 线程池工具类
* @author lixiang
* @date 2018年10月10日 - 11:10
* @history 2018年10月10日 - 11:10 lixiang create.
*/
public class ThreadPoolHelper {
private static final Logger logger = LoggerFactory.getLogger(ThreadPoolHelper.class);
private static final int POOL_SIZE = 40;//线程池大小
//创建线程池
private static ThreadPoolExecutor taskPool =(ThreadPoolExecutor) new ScheduledThreadPoolExecutor(POOL_SIZE,
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
/**
* 执行任务
* @author lixiang
* @date 2018年10月10日 - 11:12
* @history 2018年10月10日 - 11:12 lixiang create.
*/
public static void executeTask(Runnable comitTask) {
taskPool.execute(comitTask);
logger.debug("【线程池任务】线程池中线程数:" + taskPool.getPoolSize());
logger.debug("【线程池任务】队列中等待执行的任务数:" + taskPool.getQueue().size());
logger.debug("【线程池任务】已执行完任务数:" + taskPool.getCompletedTaskCount());
}
/**
* 关闭线程池
* @author lixiang
* @date 2018年10月10日 - 11:15
* @history 2018年10月10日 - 11:15 lixiang create.
*/
public static void shutdown() {
logger.debug("shutdown taskPool...");
taskPool.shutdown();
try {
if (!taskPool.isTerminated()) {
logger.debug("直接关闭失败[" + taskPool.toString() + "]");
taskPool.awaitTermination(3, TimeUnit.SECONDS);
if (taskPool.isTerminated()) {
logger.debug("成功关闭[" + taskPool.toString() + "]");
} else {
logger.debug("[" + taskPool.toString() + "]关闭失败,执行shutdownNow...");
if (taskPool.shutdownNow().size() > 0) {
logger.debug("[" + taskPool.toString() + "]没有关闭成功");
} else {
logger.debug("shutdownNow执行完毕,成功关闭[" + taskPool.toString() + "]");
}
}
} else {
logger.debug("成功关闭[" + taskPool.toString() + "]");
}
} catch (InterruptedException e) {
logger.warn("接收到中断请" + taskPool.toString() + "停止操作");
}
}
}
如有问题还请不吝赐教!!!