线程池-Spring

1、spring自带的线程池使用的是org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor类
123

​ 类中会默认定义数量锁、核心线程数、最大线程数、线程空闲存活时间、队列的长度、是否允许核心线程超时这5个参数。

​ 数量锁是当set/get这些参数时,都要先获取这把锁,保证同一时间点内,只有一个线程能对数据进行读取和操作。

​ 最大线程数与队列长度都默认设定了int的最大值。

​ 【重点】是当核心线程数占用满了的时候,新来的调用会放到队列中,当队列中装满时,核心线程又没有释放,这个时候才回创建新的线程,不是当线程池到达了最大线程数才回把新的调用放入到队列中。

截屏2020-10-13 上午10.42.05截屏2020-10-13 上午10.54.28
​ 队列使用的是阻塞队列BlockingQueue,默认创建的链式阻塞队列,里面的数据结构是链表,如果设置了队列长度为0,则就队列会初始化为同步队列。

​ 在java中队列的种类有很多种,其中BlockingQueue对多线程来说是最友好的,它是一种阻塞队列。

​ Queue中包含了offer、poll、peek方法,offer方法会有返回值表示添加是否成功。

​ BlockingQueue继承了Queue,新增了take、put两个阻塞的方法。由子类进行具体实现。

​ 在spring中可以自己定义拒绝策略,或者使用java自带的拒绝策略。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDK线程池Spring线程池都是用于管理和执行多线程任务的工具。它们有一些相似之处,但也有一些区别。 JDK线程池是Java标准库中提供的一个线程池实现,位于`java.util.concurrent`包下。它提供了ThreadPoolExecutor类来创建和管理线程池。JDK线程池的主要特点包括: 1. 可以自定义线程池的大小和线程池的工作队列。 2. 提供了各种任务调度策略,例如固定大小线程池、缓存线程池、单线程池等。 3. 支持提交Callable和Runnable类型的任务,并返回Future对象以获取任务的执行结果。 4. 提供了一些监控和管理线程池的方法,例如获取线程池状态、关闭线程池等。 Spring线程池是在Spring框架中提供的一个对JDK线程池的封装。它基于JDK线程池,并提供了更高级别的功能和更方便的配置选项。Spring线程池的特点包括: 1. 可以通过Spring配置文件或注解来配置和管理线程池。 2. 支持异步方法调用,可以将某个方法调用标记为异步执行,从而将其放入线程池中执行。 3. 可以通过配置线程池的属性来控制并发执行的线程数量、线程池的队列大小、任务拒绝策略等。 4. 提供了对任务执行状态的监听和处理机制。 总的来说,JDK线程池是Java标准库提供的一种多线程任务管理工具,而Spring线程池是在JDK线程池基础上提供的更高级别的封装,方便在Spring应用中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值