Bootstrap

java8 线程池解析

线程池的作用

虽然相对进程而言,线程创建的开销要小一点,但是绝对来讲线程的创建开销也不小。线程的创建(start函数执行后才是真正的去创建线程)不仅会进行系统调用,涉及到上下文切换(由用户态切换到内核态)。实际上内核在创建线程时,会涉及到诸多操作,比如分配线程描述符,内存表等。
如果线程不进行池化复用,每次都是创建线程,任务处理完后就销毁线程,会极大的浪费创建线程的时间开销。因为如果线程池化复用后,创建线程的开销,会摊薄到每一个任务上面。
即使线程池没有任务处理,线程会阻塞在锁上面,不会被操作系统调度,顶多浪费一点点内存而已,不会消耗CPU。
另外线程池可以设置核心线程数和最大线程数,可以对线程数量进行管理,防止线程数爆炸,耗尽系统资源。

线程池的涉及

线程池的总体架构

在这里插入图片描述
我们平时编码时接触的应该时Executors,它内置了常见的创建线程池的场景,简化了线程池的创建,线程池的参数还是比较多的。
-待续

;