是什么?
就是一种多线程处理形式,处理过程中可以将任务添加到对列中,然后在创建线程后自动启动这些任务。
优点:
1.降低资源消耗
2.提高响应速度
3.提高线程的可管理性
应用场景:
有并发的地方、任务数量大或小、每个任务执行时间长或短都可以使用线程池。例如:网购商品秒杀,云盘文件上传和下载
注意:在使用的时候要设置合理的线程池大小
java内置线程池
- ThreadPoolExecutor构造方法
饱和处理机制:就是核心线程数量、最大线程数量、任务队列多放满了,这个时候线程池就处于饱和状态了,没有能力再继续处理接下来的任务,此时就会使用饱和处理机制,将任务处理一下(即:丢弃一些任务,让任务等待)
线程池的五中状态
- RUNNING: 可以接受新任务,以及对已添加的任务进行处理
- SHUTDOWN: 不能接受新任务,但是可以处理排队任务
- STOP:不接受新任务,不处理排队任务,中断正在进行的任务
- TIDYING:所有任务都终止,当有效线程数为“0”,线程池的状态变为TIDYING,也会执行钩子函数terminated()
- TERMINATED: 线程彻底终止
关闭线程池的方法
- SHUTDOWN():关闭线程池,等待任务都执行完成
- SHUTDOWNNOW():不等任务都执行完,就关闭线程池