线程池 Executors
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程 就会大大降低 系统的效率,因为频繁创建线程和销毁线程需要时间. 线程池就是一个容纳多个线程的容 器,池中的线程可以反复使用,省去了频繁创建线程对象的操作,节省了大量的时间和资源。
线程池的好处
降低资源消耗。
提高响应速度。
提高线程的可管理性。
Java中有4中线程池:
- 缓存线程池:
- (长度无限制)
- 任务加入后执行流程:
-
1.判断线程池是否勋在空闲线程
-
2.存在则使用
-
3.不存在则创建线程线程,并放入线程池,然后使用
2. 定长线程池:- (长度是指点的数值)
- 任务加入后执行流程:
-
1.判断线程吃是否存在空想线程
-
2.存在则使用
-
3.不存在空闲线程,切线程池未满的情况下,则创建线程,并放入线程池,然后使用
-
4.不存在空闲线程,切线程池已满的情况下,则等待线程池出现空闲线程
3.单线程线程池:- 执行流程:
-
1.判断线程池的 单个线程 是否空闲
-
2.空闲则使用
-
3.不空闲 ,则等待 池中的单个线程 空闲 后使用
4.周期任务 定长线程池- 执行流程:
-
1.判断线程池是否存在空闲线程
-
2.存在则使用
-
3.不存在空闲线程池,且线程池未满的情况下,则创建线程 并放入线程池 然后使用
-
4.不存在空闲线程池,且线程池已满的情况下,则等待线程池存在空闲线程
-
定期执行,当某个时机触发时,自动执行任务