Java并发编程-Java线程池
文章目录
- Java并发编程-Java线程池
一、线程池原理与应用(重点)
我们知道线程的资源是非常宝贵的,创建一个线程,需要从代码层,再到JVM层,再到操作系统层。原生的线程走一圈,中间的线程状态(进行变更),之后走回来。整个过程,它的成本和代价是特别高的。
所以,一个理想的做法是,在应用运行的时候先直接创建一组线程,然后在重复利用的过程中,一直利用这些线程。就跟连接池是一样的。
池化是一种综合性的设计模式。
当一个资源很宝贵,而且是可以复用的,这时候就可以在上面建一个池。一开始就初始化一批,然后就一直轮换着使用。
如果每次使用的时候都有开始和结束,那么要在中间加一个代理,把它的开始和结束变成一个假的。不真正的把它销毁掉。只需要把它的开始变成从这个池里借一个可用的,把关闭(shutdown)这些操作把它改成归还(把上面占用的标记干掉,归还到我们的线程池里或数据库连接池)。
这样我们每次使用,都和原生的线程活或连接一样。创建一个、打开一个、关闭一个,就变成借一个,还回去。
1.1 线程池(JDK中对线程池支持的类模型)
在构建一个线程池的时候,我们要明确一个线程池中有哪些东西:
-
Excutor: 执行者 – 顶层接口
首先,我们需要有一个可执行的东西,所以创建了一个接口