是什么?
线程池是一种多线程处理形式
作用:
减少每次获取和结束资源的消耗,提高对资源的利用率。
线程池,顾名思义就是事先创建若干个可执行的线程放入一个容器(池)中,需要的时候从池中获取线程,而不用自行创建,使用完之后不需要销毁,而是放回池中,从而减少创建和销毁线程对象的开销。
假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。
线程池的五种状态:
1.RUNNING:线程池被创建之后进入RUNNING状态,这个状态下线程池
2.SHUTDOWN:线程池不接收新的任务,但能处理已添加的任务
3.STOP:不仅不接收新任务,已添加的任务也不会处理,并且正在执行的任务也会中断
4.TIDYING:线程池在所有的任务已经终止,任务数量为0的时候,变成TIDYING,此时会执行terminated()函数
5.TERMINATED:在钩子函数terminated()执行完成之后变成TERMINATED状态
常见线程池
1.newSingleThreadExecutor
单个线程的线程池,就是说线程池中每次只有一个线程在工作,单线程串行执行任务
2.newFixedThreadExecutor(n)
固定数量的线程池,每提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行
池化技术的应用:
(提前把资源放好,以供使用)
1.数据库连接池子
2.http连接池
3.redis