概要
实现线程主要有3种方式:使用内核线程实现、使用用户线程实现和使用用户线程加轻量级进程混合实现。
- 内核线程模型:完全依赖操作系统内核提供的内核线程(Kernel-Level Thread ,KLT)来实现多线程
- 程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口——轻量级进程(Light Weight Process,LWP);
- 轻量级进程与内核线程之间1:1的关系称为一对一的线程模型;
- 用户线程模型:有程序自行管理(少用);
- 混合线程模型:结合内核模型和用户模型使用;
线程调度
线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种,分别是协同式线程调度(Cooperative Threads-Scheduling)和抢占式线程调度(Preemptive Threads-Scheduling)。
- 协同式调度:线程的执行时间由线程本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另外一个线程上;
- 抢占式调度:每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定(Java使用抢占式调度);