
一、线程是什么进程是操作系统资源分配的最小单位独立内存、文件句柄、CPU 上下文等而线程是进程内部独立执行流是 CPU 调度执行的最小单位。 一个进程至少包含一条主线程同一进程下所有线程共享进程的堆、全局变量、文件描述符等资源但每条线程拥有私有栈、寄存器、局部变量彼此执行互不阻塞。可以通俗比喻 进程 一间完整办公室拥有桌椅、打印机、文件柜全部资源 线程 办公室里同时干活的员工 整间办公室资源所有人共用但每个员工有自己的笔记本私有栈能独立做自己的工作。二、线程与进程核心区别资源隔离进程间资源完全隔离通信成本极高管道、socket、共享内存 同进程线程共享绝大部分资源通信简单直接读写全局变量即可。切换开销进程切换需要更换页表、刷新缓存、重置全套资源上下文开销巨大 线程仅切换私有栈与寄存器同进程资源不变切换速度远快于进程。生命周期影响主线程结束整个进程直接销毁所有子线程一同终止 单个子线程退出不影响进程与其他线程运行。三、多线程的核心价值并发CPU 同一时刻只能执行一条指令单核 CPU 依靠时间片轮转快速切换多个线程模拟同时运行多核 CPU 则可以真正并行多个线程在不同核心同时执行。 多线程主要解决两类场景IO 阻塞场景网络请求、文件读写、数据库操作会让线程闲置等待。单线程会全程卡住多线程可让等待 IO 的线程让出 CPU其他线程继续运算充分利用 CPU。计算密集场景多核环境拆分计算任务到多线程并行执行缩短整体耗时提升运算效率。四、多线程带来的问题线程安全资源共享是线程优势也是最大隐患 ——多条线程同时读写同一共享数据会产生数据竞争、结果错乱即线程不安全。 举例两个线程同时对变量count自增分为读取、计算、写入三步线程交替执行会丢失更新最终数值小于预期。常见同步解决方案互斥锁同一时间仅一条线程访问共享资源保证操作原子性读写锁读多写少场景读线程可并行写线程独占资源原子类底层硬件指令保证数值操作不可拆分无锁高效线程本地存储ThreadLocal让数据仅当前线程私有从根源避免竞争。除此之外多线程还存在死锁、线程频繁切换带来的上下文开销、内存可见性、指令重排等并发问题需要配合锁、内存屏障合理规避。五、线程的生命周期通用状态分为五种新建NEW线程对象创建完成未调用启动方法未分配 CPU 资源就绪RUNNABLE调用 start 后等待 CPU 时间片随时可执行运行RUNNING拿到时间片CPU 正在执行线程代码阻塞BLOCKED/WAITING等待锁、sleep、IO 阻塞、等待通知主动放弃 CPU终止TERMINATED代码执行完毕或异常退出线程销毁无法重启。六、总结线程是轻量化执行单元依托进程存在依靠资源共享实现高效并发 单线程逻辑简单无并发冲突但 IO / 多核场景性能低下 多线程能充分利用硬件资源、提升程序吞吐但必须处理共享资源竞争、同步锁、死锁等并发难题 开发中需要根据业务场景权衡IO 密集型适合多线程简单轻量任务过多线程反而会因切换损耗降低性能。