线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。尽管线程池是一种多线程处理形式,但线程池依然有着自己的组成部分,这些组成部分共同组成了线程池,给线程池提供了技术支持。
线程池一般情况下有以下几个部分组成:
线程池管理器,顾名思义,就是用来用于创建并管理线程池,包括创建线程池,销毁线程池,添加新任务。线程池管理器能够通过调用线程池里面的线程来执行异步任务,从而完成对线程池的关管理工作。当有过多的异步任务执行时,程序性能可能因为资源瓶颈降低,甚至直接挂掉。而线程池管理器提供了一种管理线程资源的方法,它能够控制线程创建的数量,甚至是拒绝新任务。另外,ThreadPoolExecutor也提供一些数据统计功能,例如已完成任务数量、当前线程数目等。
为了适应各种应用场景,线程池管理器提供了一系列可配置参数,例如corePoolSize(核心线程数目)、maximumPoolSize(最大线程数目)、keepAliveTime(线程空闲时间)、workQueue(任务存放队列)等。
笼统的来说,工作线程就是线程池中线程,服务器端为了能流畅处理多个客户端链接,一般在某个线程A里面accept新的客户端连接并生成新连接的socket fd,然后将这些新连接的socketfd给另外开的数个工作线程B1、B2、B3、B4,这些工作线程处理这些新连接上的网络IO事件(即收发数据),同时,还处理系统中的另外一些事务。这里我们将线程A称为主线程,B1、B2、B3、B4等称为工作线程。
在线程池中有很多的接口,这些不同种类的接口都有着不同的功能,线程池中的任务接口就是每个任务必须实现的接口,以供工作线程调度任务的执行。
用于存放没有处理的任务,这其实和Java多线程的并行机制有一定的关系。在线程池中有时候会有大量的任务,有的已经处理完成,有的正在处理,有的还没有处理,而这些还没有得到处理的线程,需要按照一定的顺序排列,然后等待处理,这就是线程池的任务队列。线程池的任务队列实际上提供了一种缓冲机制。
上述的线程池的组成部分合在一起共同组建成了线程池,各部分之间相互协作,才完成了线程池技术。对应线程池技术的学习,我们可以到动力节点在线网站,观看免费的视频课程,让我们对象学习事半功倍。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54