本文主要是介绍线程池工具类——Thread学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
记录一下线程池工具类:
/*** 线程池工具类* @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() + "停止操作");}}
}
如有问题还请不吝赐教!!!
这篇关于线程池工具类——Thread学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!