线程池
1. 定义线程池
@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());});}}
@ServicepublicclassTaskService{@Autowired@Qualifier("executorService")privateExecutorServiceexecutorService;}
@ServicepublicclassTaskService{privatefinalExecutorServiceexecutorService;publicTaskService(@Qualifier("executorService")ExecutorServiceexecutorService){this.executorService=executorService;}}