JAVA线程池简单理解
两种线程模型
a. 用户级线程(ULK)
由应用本身管理,不依赖操作系统核心,不需要用户态/核心态切换
那么什么是内核态,什么是用户态呢?只要想一想现实生活中,处于社会核心的人与处于社会边缘的人有什么区别就能明白处于核心的人拥有的资源多!因此,内核态就是拥有资源多的状态,或者说访问资源多的状态,我们也称之为特权态,速度快。相对来说,用户态就是非特权态,在此种状态下访问的资源将受到限制。
b. 内核级线程(KLT)在JVM用的99%线程属于KLT,CPU管理,依赖操作系统
两种权限,用户访问用户空间,内核空间只能内核访问,JVM虽然安装在用户空间,但可以调用系统开放的API,创建线程,映射到底层内核线程,所以JVM的线程要切换用户态于内核态,Java依赖于内核线程,为了避免资源过度消耗重要中线用户线程。
线程池的使用:
- 单个任务处理的时间比较短
-
需要处理的任务数量很大
优势:a. 重要线程,减少线程创建,消亡的开销,提高性能b. 提高响应速度c. 提高线程的可管理性