动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

线程池的组成部分详解

05-21 17:31 994浏览
举报 T字号
  • 大字
  • 中字
  • 小字

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。尽管线程池是一种多线程处理形式,但线程池依然有着自己的组成部分,这些组成部分共同组成了线程池,给线程池提供了技术支持。

线程池一般情况下有以下几个部分组成:

1.线程池管理器(ThreadPoolManager):

线程池管理器,顾名思义,就是用来用于创建并管理线程池,包括创建线程池,销毁线程池,添加新任务。线程池管理器能够通过调用线程池里面的线程来执行异步任务,从而完成对线程池的关管理工作。当有过多的异步任务执行时,程序性能可能因为资源瓶颈降低,甚至直接挂掉。而线程池管理器提供了一种管理线程资源的方法,它能够控制线程创建的数量,甚至是拒绝新任务。另外,ThreadPoolExecutor也提供一些数据统计功能,例如已完成任务数量、当前线程数目等。
为了适应各种应用场景,线程池管理器提供了一系列可配置参数,例如corePoolSize(核心线程数目)、maximumPoolSize(最大线程数目)、keepAliveTime(线程空闲时间)、workQueue(任务存放队列)等。

2.工作线程(WorkThread):

笼统的来说,工作线程就是线程池中线程,服务器端为了能流畅处理多个客户端链接,一般在某个线程A里面accept新的客户端连接并生成新连接的socket fd,然后将这些新连接的socketfd给另外开的数个工作线程B1、B2、B3、B4,这些工作线程处理这些新连接上的网络IO事件(即收发数据),同时,还处理系统中的另外一些事务。这里我们将线程A称为主线程,B1、B2、B3、B4等称为工作线程。

3.任务接口(Task):

在线程池中有很多的接口,这些不同种类的接口都有着不同的功能,线程池中的任务接口就是每个任务必须实现的接口,以供工作线程调度任务的执行。

4.任务队列:

用于存放没有处理的任务,这其实和Java多线程的并行机制有一定的关系。在线程池中有时候会有大量的任务,有的已经处理完成,有的正在处理,有的还没有处理,而这些还没有得到处理的线程,需要按照一定的顺序排列,然后等待处理,这就是线程池的任务队列。线程池的任务队列实际上提供了一种缓冲机制。

 上述的线程池的组成部分合在一起共同组建成了线程池,各部分之间相互协作,才完成了线程池技术。对应线程池技术的学习,我们可以到动力节点在线网站,观看免费的视频课程,让我们对象学习事半功倍。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵696
程序员代码小兵696

118篇文章贡献392976字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消