[java]线程池

9 篇文章 1 订阅

为什么需要线程池

  1. 在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在处理实际的用户请求的时间和资源要多得多。
  2. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争。
  3. 缺乏扩展性
  4. 缺乏可重用性

什么时候需要线程池

  1. 当一个Web服务器接受到大量短小线程的请求时,使用线程池技术是非常合适的,它可以大大减少线程的创建和销毁次数,提高服务器的工作效率。
  2. 需要提供定时执行、定期执行、单线程、并发数控制等功能。

java线程池

Java8共有7种线程池,分别是:
1. newCachedThreadPool
- 缓存型线程池
- 可根据需要灵活回收空闲线程
- 可根据需要新建线程
- 通常用于执行生命周期很短的异步型任务
2. newFixedThreadPool
- 定长线程池
- 固定数目的线程数
- 控制最大并发数
3. newScheduledThreadPool
- 调度型线程池/定长/定时/周期性任务
4. newSingleThreadExecutor
- 单例线程
- 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行
5. newSingleThreadScheduledExecutor
- 一个线程
- 可在指定延迟后执行线程
6. ExecutorService newWorkStealingPool(int parallelism)
- 创建持有足够线程的线程池来支持给定的并行级别
- 使用多个队列减少竞争
7. ExecutorService newWorkStealingPool()
- 上一个方法的简化版
- 并行级别依cpu而定

总结

java通过多线程的方式来实现并发,为了方便的管理线程,JAVA采用线程池的方式对线线程的整个生命周期进行管理。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盖丽男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值