Java高并发编程详解系列-线程池原理自定义线程池

本文深入探讨Java高并发编程中的线程池原理,从自定义线程池的角度出发,介绍线程池接口、线程队列、线程工厂、拒绝策略和调用策略的实现。详细讲解了线程池设计的关键要素,包括任务队列大小、线程存活时间及线程池的自我维护功能。最后展示了自定义线程池的使用方法,帮助读者更好地理解和应用线程池。

之前博客的所有内容是对单个线程的操作,例如有Thread和Runnable的使用以及ThreadGroup等的使用,但是对于在有些场景下我们需要管理很多的线程,而对于这些线程的管理有一个统一的管理工具叫做线程池,线程池就是管理很多的线程的一个集合。这篇分享中提出的一个就是关于线程池的概念。

线程池原理

  从JDK1.5开始,utils包提供了一个类ExecutorService,这个类是对线程池的实现,关于线程Thread来说,它的整个生命周期中都是需要很好的管理,但是我们频繁的创建或者是销毁线程极大的浪费了系统的资源,那么就需要将线程进行重复的利用。基于这个需求设计出了线程池。

  所谓的线程池,从字面上理解就是存放线程的一个容器。当某个任务需要执行的时候,在线程池里的线程就会主动调用这个任务。但是还需要知道这个线程池的资源也是有限的,什么时候对于线程池的资源进行回收,什么时候进行线程的补充,什么如果达到容量之后继续提交任务会是什么状态等等。
  基于上面的描述可以知道一个线程池主要具备的要素有以下一些

  1. 任务队列,用来缓存提交的任务
  2. 线程池数量管理功能,在线程池执行的任务要在一个可以控制的范围内。例如在使用线程池的时候最为经典的三个参数,第一个参数就是初始化线程的数量,第二参数就是可以扩展的线程池的最大容量,第三个参数就是线程池所能执行的核心任务的数量。其中这个核心线程的数量表示当线程池闲置的时候也要维护的线程的数量。、
  3. 任务的执行策略,对于正在执行的线程如果达到了线程池的最大容量,之后需要对于后来的任务进行拒绝操作。或者是通知提交者没有资源可以执
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nihui123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值