[Java][Thread] 线程模型 - Gukie/learning GitHub Wiki
refer
basic term
- LWP: Light weight Process,轻量级进程
- KLT: Kernel Level Thread
- ULT: User Level Thread
线程模型
线程模型,有三种
- LWP跟KLT的比例是:1:1, 这种模型下,LWP就是一个线程
一个LWP对应一个KLT; 线程的数量受限于KLT 线程的管理需要交给内核态,所以有 用户态切与内核态来回切换的一个代价
- 进程跟线程的对应关系: 1:n
这种模型下,线程完全在用户态中管理,不需要内核态的参与; 优点是:由于线程的创建/销毁不需要内核的参与,所以不需要切换到内核态,速度很快;同时也不会受到内核资源的限制,所以可以创建很多的线程 缺点是:应用程序需要管理自己创建的线程,这个过程很复杂,不容易实现
- 用户线程跟LWP的对应关心: n:m
是前面两种模型的混合版; 底层是一个LWP对应一个KLT,上层是多个用户线程对应一个LWP
Java 使用哪种模式
Java的线程模型,使用 LWP:KLT = 1:1 这种模型