线程池工具类——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() + "停止操作");
        }
    }
}

如有问题还请不吝赐教!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值