SpringBoot使用线程池

SpringBoot使用线程池

软件环境
名称 版本号
jdk 1.8
springboot 2.1.6
maven 3.3.9

1.Java中创建线程池

只会介绍java中线程池的核心类ThreadPoolExecutor,其他用法请自行查询

1.1 ThreadPoolExecutor类介绍

jdk1.8 源码 删减部分内容

ThreadPoolExecutor的执行流程如下:

提交新任务 YES NO YES NO YES NO 主线程 线程池 线程数<核心线程数 新建线程处理请求 工作队列是否已满 线程数<最大线程数 新任务放到队列中 新建线程处理请求 调用RejectedExecutionHandler来做拒绝处理

jdk默认提供四种RejectedExecutionHandler接口的实现

  • AbortPolicy: 直接抛出RejectedExecutionException异常
  • CallerRunsPolicy: 交由主线程执行
  • DiscardOldestPolicy: 抛弃工作队列中旧的任务,将新任务添加进队列;会导致被丢弃的任务无法再次被执行
  • DiscardPolicy: 抛弃当前任务;会导致被抛弃的任务无法再次被执行

当然你也可以自定义拒绝策略,只需要实现RejectedExecutionHandler接口即可

2.Spring中创建线程池

2.1 ThreadPoolTaskExecutor类介绍

从源码中可以看出ThreadPoolTaskExecutor就是在java中ThreadPoolExecutor的基础上封装的

3.线程池使用示例

3.1 使用ThreadPoolTaskExecutor

  • pom文件
  • config类

我们需要通过SpringBoot的配置类来配置线程池的Bean和对应的参数

来源:Cain.Chi

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月16日
下一篇 2022年3月16日

相关推荐