前言
- 首先从结构说起
- 然后线程池的参数
- 最后在结合代码简单分析
new Thread 弊端
第一:每次new Thread 新建对象,性能差
第二:线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM
第三:缺少更多的功能,如更多执行、定期执行、线程中断。
什么是线程池
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序,都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。
第一:降低资源消耗。重用存在的线程,减少对象创建、消亡的开销,性能佳。
第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,要做到合理利用、
线程池实例的几种状态
running状态:能接受新提交的任务,并且能处理阻塞队列中的任务。
shutdown状态:当一个线程池实例处于关闭状态的时候,不能在接收新提交的任务,但是可以继续处理阻塞队列中已经保存的任务。在线程池处理running状态时,它调用shutdown方法,会使线程池进入到该状态。
stop状态:不能接收新的任务,也不处理队列中的任务。它会中断正在处理中的线程,在线程池处于running或shutdown状态时,如果调用shutdownNow的时候会使线程池进入到该状态
tidying状态:如果所用的任务都终止了,有效线程数为0,线程