线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放到队列中,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完毕,再从队列中取出任务来执行。
线程池主要特点:
1、降低资源消耗。通过重复利用已经创建的线程降低线程创建和销毁造成的消耗。
我们知道当使用 new 关键字创建对象的时候,JVM需要向系统申请资源,当对象运行完成之后,又需要 CG 垃圾回收器进行回收的。这个创建和销毁也是需要消耗资源的。
2、提高响应速度。当任务到达时,任务可以不需要再等到线程创建就能立即执行。
在系统启动的时候,我们预先初始化一定数量的线程放到线程池中,这样,如果有需要用的线程的地方,就可以直接调用了,不用再等待了(可用理解为游泳池馆在开门之前,就已经把水注入到池子中了,这样,开门后,有人过来,不用再等待)。
3、提高线程的可管理性。线程是稀缺的资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

这里需要说明一点,如果线程过多,并发量过大,会造成 CPU 的过度切换从而影响到系统的性能。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.