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

Java高频面试之并发编程-06

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶

面试官:线程上下文切换是什么?

线程上下文切换(Thread Context Switching)是操作系统中 CPU 从一个线程切换到另一个线程执行的过程。它本质上是保存当前线程的执行状态(上下文),并加载下一个线程的状态,使得 CPU 可以继续执行新线程的任务。


为什么需要上下文切换?

  • 多线程并发需求:CPU 核心数有限(如 4 核),但操作系统需要同时运行成百上千的线程,必须通过快速切换线程来模拟“并行”。
  • 线程状态变化:线程可能主动让出 CPU(如等待 I/O、锁、睡眠)或被系统强制切换(如时间片用完)。

上下文切换的步骤

  1. 保存当前线程的上下文
    将当前线程的寄存器(如程序计数器 PC、栈指针 SP)、状态信息等保存到内存(通常是线程控制块 TCB)。
  2. 选择下一个要运行的线程
    由调度器(Scheduler)根据算法(如时间片轮转、优先级)选择就绪队列中的线程。
  3. 加载新线程的上下文
    从新线程的 TCB 中恢复寄存器、程序计数器、栈指针等,开始执行新线程。

触发上下文切换的常见场景

  1. 时间片耗尽:CPU 分配给线程的时间片用完,强制切换。
  2. 线程主动让出 CPU:如调用 sleep(), wait(), yield(),或等待 I/O 完成。
  3. 高优先级线程抢占:高优先级线程就绪时,可能抢占当前线程。
  4. 中断处理:硬件中断(如磁盘 I/O 完成)触发中断服务程序执行。

上下文切换的性能代价

  • 直接开销:保存/恢复上下文需要 CPU 时间(通常数百到数千时钟周期)。
  • 间接开销:切换后 CPU 缓存(Cache)可能失效,导致新线程运行时需要重新加载数据到缓存。
  • 高并发时问题放大:频繁切换会导致 CPU 时间浪费在管理线程而非执行任务,严重时引发性能下降(如 C10k 问题)。

如何减少上下文切换?

  1. 减少线程数
    使用线程池(如 ThreadPoolExecutor)复用线程,避免频繁创建/销毁线程。
  2. 非阻塞 I/O
    使用异步 I/O(如 NIO)代替同步阻塞 I/O,减少线程等待。
  3. 无锁编程
    使用无锁数据结构(如 ConcurrentLinkedQueue)或 CAS 操作,减少线程竞争。
  4. 协程(用户态线程)
    协程的切换在用户态完成(无需内核介入),开销远低于线程切换(如 Go 的 Goroutine)。

示例:上下文切换的影响

假设一个 4 核 CPU 运行 100 个活跃线程:

  • 每个时间片假设为 10ms,每 10ms 可能触发一次切换。
  • 频繁切换会导致 CPU 忙于切换而非执行有效任务,实际吞吐量下降。

总结

核心点说明
本质CPU 从一个线程切换到另一个线程时保存和恢复状态的过程。
性能关键频繁切换会显著降低系统吞吐量,尤其在多线程高并发场景。
优化方向减少线程数、异步 I/O、无锁设计、协程等。
与进程切换区别进程切换涉及虚拟内存等资源切换,开销更大;线程切换仅切换线程私有资源。

在这里插入图片描述

相关文章:

  • 腾讯秋招面试题:bug生命周期中有哪些状态?
  • (即插即用模块-特征处理部分) 四十一、(2024) MSAA 多尺度注意力聚合模块
  • 为什么Spring中@Bean注解默认创建单例Bean
  • 计算机网络笔记(六)——1.6计算机网络的性能
  • 长连接、短连接与WebSocket的基本知识
  • crictl 遇到报错 /run/containerd/containerd.sock: connect: permission denied
  • 推荐系统(二十四):Embedding层的参数是如何在模型训练过程中学习的?
  • 分糖果——牛客
  • Ragflow、Dify、FastGPT、COZE核心差异对比与Ragflow的深度文档理解能力​​和​​全流程优化设计
  • 文件系统常见函数
  • 2022 年 9 月青少年软编等考 C 语言七级真题解析
  • 根据定义给出json_schema:
  • 【Python】每隔一段时间自动清除网站上cookies的方法
  • 使用 Streamlit 打造一个简单的照片墙应用
  • 极狐GitLab 的压缩和合并是什么?
  • sglang部署DeepSeek-R1-Distill-Qwen-7B
  • fpga系列 HDL:跨时钟域同步 脉冲展宽同步 Pulse Synchronization
  • 四神-华夏大地的守护神
  • 今天开始着手准备PAT(乙级)
  • 第一节:核心概念高频题-Vue3响应式原理与Vue2的区别
  • 山西国道塌方致55岁货车司机死亡,女儿:货车的车贷还要还
  • 成都两宗宅地成功出让,民企四川联投溢价33%竞得郫都区宅地
  • 世界读书日丨上图东馆开启残疾人无障碍文化服务
  • 全球安全倡议提出三周年,外交部介绍有关情况
  • 四川苍溪警方通报一男子离家出走:遗体被打捞上岸,排除刑案
  • 中共中央、国务院印发《关于实施自由贸易试验区提升战略的意见》