
文章插图
上下文切换与资源开销多线程除了增加编码难度外,它还在执行过程中带来实际的损耗,包括资源开销和上下文切换开销 。资源开销主要包括其本身占用的内存资源、执行时线程本地栈开销以及对这些线程进行管理的开销 。而上下文切换开销则是因为CPU由一个线程切换到另外一个线程是需要做现场保护和现场恢复工作,包括线程标识、寄存器内存、线程状态、线程优先级、线程资源清单等等 。如下图所示,假设线程一和线程二由某个CPU执行 。线程一执行一段时间后将相关信息保存到现场数据结构中,而线程数据结构存放在主存储中,然后从线程二对应的现场数据结构中恢复线程二相关信息,完成现场恢复后线程二开始执行 。接下去的过程反过来,由线程二切换到线程一 。其中可以看到由虚线分割的两部分被标为切换开销,从完整的时序来看,这两部分并非执行线程的任务,而是消耗在了现场的保护和恢复上了,这便是上下文切换的开销 。

文章插图
上下文切换
在实践中我们要综合考虑多线程的优缺点,不能一味的去追求多线程,在使用多线程之前我们必须去衡量多线程带来的好处与代价 。
更多Java并发原理可关注作者下面的专栏:
作者简介:笔名seaboat,擅长人工智能、计算机科学、数学原理、基础算法 。出版书籍:图解数据结构与算法、Tomcat内核设计剖析、图解Java并发原理、人工智能原理科普 。
【进程、线程、并行与并发】
推荐阅读
- 创新|破框而出!爱奇艺更换新Logo:化繁为简、亮绿更具生机
- 狗不运动会有什么后果 狗不能做什么运动
- 多核和多线程那些事
- 捷赛自动烹饪锅常见故障 捷赛自动烹饪锅型号
- 勒索病毒加密数据库解决方案
- Dell5050、Dell 7040用U盘安装系统操作教程
- 平舌音和翘舌音有哪些字母表?
- 存储|什么硬盘都弱爆了!磁带存储大受欢迎:年出货增40%、平均容量54TB
- 头伏二伏三伏吃什么 头伏吃什么
- 埃隆马斯克|全球首富马斯克成立X控股 欲将特斯拉、SpaceX纳入其中:筹资金还要收Twitter
