线程池基本知识

本文介绍了使用线程池的原因,包括降低资源消耗、提高响应速度和便于管理。详细阐述了线程池的实现原理,包括任务提交、线程与队列的处理流程,并详细解析了如何通过ThreadPoolExecutor自定义线程池,包括核心线程数、最大线程数、存活时间、等待队列类型和拒绝策略等关键参数。同时,提到了通过Executors创建固定线程池的方法。
摘要由CSDN通过智能技术生成

一、为什么要使用线程池

不使用线程池的坏处

  • 频繁的线程创建和销毁会占用更多的CPU和内存
  • 频繁的线程创建和销毁会对GC产生比较大的压力
  • 线程太多,线程切换带来的开销将不可忽视
  • 线程太少,多核CPU得不到充分利用,是一种浪费

使用线程池的优点

  • 降低资源的消耗。线程本身是一种资源,创建和销毁线程会有CPU开销;创建的线程也会占用一定的内存。
  • 提高任务执行的响应速度。任务执行时,可以不必等到线程创建完之后再执行。
  • 提高线程的可管理性。线程不能无限制地创建,需要进行统一的分配、调优和监控。

二、如何创建线程池

(一)线程池的实现原理

线程池的实现原理
通过上图,可以知道线程池大致的流程:

  • 任务提交后,判断核心线程是否已满,如果不是,则创建线程执行任务
  • 如果核心满了,判断队列是否已满,如果没满,任务放在队列中等待执行
  • 如果队列满了,判断线程池是否已满,如果没满,创建其他线程执行任务,缓解压力
  • 如果线程池也满了,任务没地方放,也无法执行,则根据Handler策略进行处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值