【底层知识】线程模型

本文探讨了三种线程实现方式:内核线程、用户线程和混合模型,重点解析了一对一的线程模型。同时,介绍了线程调度的两种策略——协同式和抢占式调度,阐述了它们在多线程执行中的不同角色。Java采用的是抢占式调度,确保线程执行的可控性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要

实现线程主要有3种方式:使用内核线程实现、使用用户线程实现和使用用户线程加轻量级进程混合实现。

在这里插入图片描述

  • 内核线程模型:完全依赖操作系统内核提供的内核线程(Kernel-Level Thread ,KLT)来实现多线程
    • 程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口——轻量级进程(Light Weight Process,LWP);
    • 轻量级进程与内核线程之间1:1的关系称为一对一的线程模型;
  • 用户线程模型:有程序自行管理(少用);
  • 混合线程模型:结合内核模型和用户模型使用;

线程调度

线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种,分别是协同式线程调度(Cooperative Threads-Scheduling)和抢占式线程调度(Preemptive Threads-Scheduling)。

  • 协同式调度:线程的执行时间由线程本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另外一个线程上;
  • 抢占式调度:每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定(Java使用抢占式调度);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值