从业以来其实我一直对线程池接触的比较少,了解的比较潜,最近也看了看相关的知识,今天呢总结一下线程池的知识。
线程池能有效的处理多个线程的并发问题,避免大量的线程因为互相强占系统资源导致阻塞现象,能够有效的降低频繁创建和销毁线程对性能所带来的开销。
一、使用线程池有三个好处:
1、降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
2、提高响应速度:当任务到达时,任务可以不需要的等到线程创建就能立即执行。
3、提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控。
二、线程池的实现原理
当一个新任务提交到线程池时,简单来说线程池的处理流程如下:
#1、判断核心线程池里的线程是否都在执行任务,如果不是则创建一个新的工作线程处理任务,否则进入下个流程
#2、判断工作队列是否已满,如果未满则将新提交的任务存储在该工作队列,否则进入下个流程
#3、判断线程池里的线程是否都处于工作状态,如果不是则创建一个新的工作线程来执行任务,否则交由饱和策略处理
真正线程池的实现是通过ThreadPoolExecutor,ThreadPoo