1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package com.boman.domain.utils;
- import com.google.common.util.concurrent.ThreadFactoryBuilder;
- import org.springframework.stereotype.Service;
- import java.util.concurrent.*;
- /**
- * @author shiqian
- * @desc 线程池
- * @date 2021年09月09日 14:56
- **/
- @Service
- public class ThreadPoolService {
- /**
- * 自定义线程名称,方便的出错的时候溯源
- */
- private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat("myself-pool-%d").build();
- /**
- * 功能描述:
- *
- * @param corePoolSize 线程池核心池的大小
- * @param maximumPoolSize 线程池中允许的最大线程数量
- * @param keepAliveTime 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间
- * @param unit keepAliveTime 的时间单位
- * @param workQueue 用来储存等待执行任务的队列
- * @param threadFactory 创建线程的工厂类
- * @param handler 拒绝策略类,当线程池数量达到上线并且workQueue队列长度达到上限时就需要对到来的任务做拒绝处理
- * @return ExecutorService
- */
- private static final ExecutorService EXECUTOR_SERVICE = new ThreadPoolExecutor(
- 4,
- 40,
- 0L,
- TimeUnit.MILLISECONDS,
- new LinkedBlockingQueue<>(1024),
- THREAD_FACTORY,
- new ThreadPoolExecutor.AbortPolicy()
- );
- /**
- * 获取线程池
- *
- * @return 线程池
- */
- private static ExecutorService getEs() {
- return EXECUTOR_SERVICE;
- }
- /**
- * 使用线程池创建线程并异步执行任务 ps:无返回值
- *
- * @param runnable 任务
- */
- public static void execute(Runnable runnable) {
- getEs().execute(runnable);
- }
- }
|