文章目录
- 线程池
- 1. 定义线程池
- 2. 注入线程池
线程池
1. 定义线程池
- 定义线程池工具类
value起别名
@ComponentpublicclassThreadUtil{@Bean("executorService")publicExecutorServiceexecutorService(){returnnewThreadPoolExecutor(10,// 核心线程数30,// 最大线程数60,TimeUnit.SECONDS,// 空闲线程存活时间newArrayBlockingQueue<>(500),// 有界队列newThreadFactory(){// 自定义线程名privatefinalAtomicIntegerindex=newAtomicInteger(1);@OverridepublicThreadnewThread(Runnabler){returnnewThread(r,"task-pool-"+index.getAndIncrement());}},newThreadPoolExecutor.CallerRunsPolicy()// 拒绝策略);}}2. 注入线程池
- 注入线程池,要用
@Qualifier来与value的值对应 @Resource()
@ServicepublicclassTaskService{@Resource(name="executorService")privateExecutorServiceexecutorService;publicvoiddoTask(){executorService.execute(()->{System.out.println("执行任务 → "+Thread.currentThread().getName());});}}@AutoWrite()
@ServicepublicclassTaskService{@Autowired@Qualifier("executorService")privateExecutorServiceexecutorService;}- 构造器注入
@ServicepublicclassTaskService{privatefinalExecutorServiceexecutorService;publicTaskService(@Qualifier("executorService")ExecutorServiceexecutorService){this.executorService=executorService;}}