当前位置: 首页 > news >正文

对线程的理解

一、线程是什么

进程是操作系统资源分配的最小单位(独立内存、文件句柄、CPU 上下文等),而线程是进程内部独立执行流,是 CPU 调度执行的最小单位。 一个进程至少包含一条主线程,同一进程下所有线程共享进程的堆、全局变量、文件描述符等资源;但每条线程拥有私有栈、寄存器、局部变量,彼此执行互不阻塞。

可以通俗比喻: 进程 = 一间完整办公室(拥有桌椅、打印机、文件柜全部资源); 线程 = 办公室里同时干活的员工; 整间办公室资源所有人共用,但每个员工有自己的笔记本(私有栈),能独立做自己的工作。

二、线程与进程核心区别

  1. 资源隔离进程间资源完全隔离,通信成本极高(管道、socket、共享内存); 同进程线程共享绝大部分资源,通信简单,直接读写全局变量即可。
  2. 切换开销进程切换需要更换页表、刷新缓存、重置全套资源上下文,开销巨大; 线程仅切换私有栈与寄存器,同进程资源不变,切换速度远快于进程。
  3. 生命周期影响主线程结束,整个进程直接销毁,所有子线程一同终止; 单个子线程退出,不影响进程与其他线程运行。

三、多线程的核心价值:并发

CPU 同一时刻只能执行一条指令,单核 CPU 依靠时间片轮转,快速切换多个线程模拟同时运行;多核 CPU 则可以真正并行,多个线程在不同核心同时执行。 多线程主要解决两类场景:

  1. IO 阻塞场景:网络请求、文件读写、数据库操作会让线程闲置等待。单线程会全程卡住,多线程可让等待 IO 的线程让出 CPU,其他线程继续运算,充分利用 CPU。
  2. 计算密集场景:多核环境拆分计算任务到多线程并行执行,缩短整体耗时,提升运算效率。

四、多线程带来的问题:线程安全

资源共享是线程优势,也是最大隐患 ——多条线程同时读写同一共享数据,会产生数据竞争、结果错乱,即线程不安全。 举例:两个线程同时对变量count++,自增分为读取、计算、写入三步,线程交替执行会丢失更新,最终数值小于预期。

常见同步解决方案:

  • 互斥锁:同一时间仅一条线程访问共享资源,保证操作原子性;
  • 读写锁:读多写少场景,读线程可并行,写线程独占资源;
  • 原子类:底层硬件指令保证数值操作不可拆分,无锁高效;
  • 线程本地存储(ThreadLocal):让数据仅当前线程私有,从根源避免竞争。

除此之外多线程还存在死锁、线程频繁切换带来的上下文开销、内存可见性、指令重排等并发问题,需要配合锁、内存屏障合理规避。

五、线程的生命周期

通用状态分为五种:

  1. 新建(NEW):线程对象创建完成,未调用启动方法,未分配 CPU 资源;
  2. 就绪(RUNNABLE):调用 start 后等待 CPU 时间片,随时可执行;
  3. 运行(RUNNING):拿到时间片,CPU 正在执行线程代码;
  4. 阻塞(BLOCKED/WAITING):等待锁、sleep、IO 阻塞、等待通知,主动放弃 CPU;
  5. 终止(TERMINATED):代码执行完毕或异常退出,线程销毁,无法重启。

六、总结

线程是轻量化执行单元,依托进程存在,依靠资源共享实现高效并发; 单线程逻辑简单无并发冲突,但 IO / 多核场景性能低下; 多线程能充分利用硬件资源、提升程序吞吐,但必须处理共享资源竞争、同步锁、死锁等并发难题; 开发中需要根据业务场景权衡:IO 密集型适合多线程,简单轻量任务过多线程反而会因切换损耗降低性能。

http://www.cnnetsun.cn/news/3055524.html

相关文章:

  • 关于搜索算法在人工智能中的应用与演化的技术7
  • 华为MetaERP 财务 ERP 解决方案架构师(EBS+SAP+MetaERP 复合背景)全国需求现状 + 城市潜力分级一、全国整体市场需求(2026 年现状)1. 需求整体判断:结构性紧缺,复
  • 数据中心电力模块的发展趋势对数据中心建设有哪些影响?
  • 在Python中用any-singleton实现单例模式单例模式
  • 2025轻松指南:零基础医疗会议转待办,包教包会避坑干货满满
  • 论范式转移中的组织认知坍塌与动态评价体系的重构:从“柯达死链”到“用现在质疑过去”的演进逻辑
  • 安心存取,轻松分享!一款基于 CloudFlare 的开源文件托管工具!
  • Agent 上下文管理深度解析
  • Madgicx 好用吗?当预算跨了三个平台,你需要的可能不是另一个优化器
  • LLM、Token、RAG、MCP……这10个AI名词,一张图给你讲明白
  • TPIC7710评估板实战指南:从硬件连接到电机控制与故障诊断
  • 从零到一:用nssm将任意应用封装为Windows服务
  • 实战!LangGraph Multi-Agent Supervisor 模式:手把手构建生产级多智能体系统
  • 用Rust给Python写一个高性能扩展模块(PyO3实战)
  • XCP协议:从总线标定到汽车ECU数据交互的核心
  • HarmonyOS APP《画伴梦工厂》开发第9篇:相机开发实战——调用系统相机拍照
  • 税务申报工具:税法规则与自动计算的系统
  • HarmonyOS APP《画伴梦工厂》开发第10篇:相册选择与 PhotoViewPicker——从相册导入图片
  • Java的java.lang.foreign.MemorySegment内存访问模式与缓存友好性优化
  • AI之长效智能体Hermes Agent
  • 实时更新策略
  • BufferedInputStream 源码——带有缓冲区的装饰器类 BufferedInputStream.class 的UML关系图,如下所示:
  • 现存coding plan /token plan推荐
  • LockSupport简介
  • 基于超混沌系统和SHA-256算法的图像加密算法研究算法matlab实现
  • 数学建模一键生成所有图片的实验代码
  • 【滤波】基于平方根无迹卡尔曼滤波SR-UKF实现信号去噪附matlab代码
  • 无特征0day穿透边界防护未触发任何告警 全量行为建模如何4小时锁死全链路影响范围
  • 氢燃料电池(PEMFC)系统仿真建模+空压机、阴极、阳极、电堆模型Matlab仿真
  • AI 前沿速报 | 2026年第27周(6月22日 — 6月28日)