网易首页 > 网易号 > 正文 申请入驻

线程死锁通俗讲解

0
分享至



一、先看生活例子(通俗版),秒懂死锁

咱们不用先记复杂专业词,先看两个平时能遇到的场景,一眼就知道死锁啥意思!

案例1:拿筷子吃饭(最易理解)

咱们平时吃饭,得左右手各拿一根筷子才能正常用餐吧?

  • 小明先抢到了左边的筷子,还差右边的,就站那等小红把右边的筷子让给他;
  • 小红呢,先抢到了右边的筷子,还差左边的,也站那等小明把左边的筷子让给他;
  • 关键来了:小明不放手左边的,就等右边的;小红不放手右边的,就等左边的。俩人就这么僵着,谁都吃不上饭,也谁都不撒手——这就是死锁!
案例2:独木桥通行(更直观)

村里的独木桥,一次只能过一个人,不能两个人并排走、双向通行。

  • 甲从桥东往桥西走,刚走到桥中间;
  • 乙从桥西往桥东走,也刚上桥;
  • 甲不想退回去,等着乙退;乙也不想退,等着甲退。俩人卡在桥中间,一动不动,谁都过不了——这也是死锁。
二、通俗+专业双版:什么是线程死锁?

通俗版(新手必看)

程序里的“线程”,就相当于咱们刚才说的小明、小红,或者过桥的甲乙,就是程序里“干活的小工人”;“资源”就是小工人要用的工具(比如筷子、独木桥)。

所以线程死锁,说白了就是:几个小工人,各自拿着自己的工具,又都想要别人手里的工具,谁都不肯把自己的工具让出来,互相等着对方松手,最后所有小工人都卡住了,啥活也干不了,程序也跟着卡死不动了。不用记复杂定义,记住“互相卡壳、谁都不让步”,就是死锁!

专业版(规范表述)

线程死锁:指两个或多个线程在执行过程中,因争夺有限的共享资源(如锁、文件、内存等)而互相等待对方释放已占有的资源,且所有线程都无法主动释放自己持有的资源,最终导致所有线程陷入无限僵持状态,程序停止响应、无法继续执行的现象。

三、死锁发生的4个必要条件(通俗+专业对应)

不是随便就能产生死锁的,必须同时满足以下4个条件(缺一不可);只要打破其中任意一个条件,就能避免死锁。咱们还是用“拿筷子”例子,对应专业表述,一看就懂。

  • 通俗版:一根筷子,同一时间只能一个人拿,不能两个人一起用(总不能俩人共用一根筷子吃饭吧);专业版互斥条件——同一共享资源在同一时间只能被一个线程占用,无法被多个线程同时共享,资源具有排他性。
  • 通俗版:自己手里拿着一根筷子(占有),还等着别人手里的另一根(等待),不撒手;专业版占有并等待条件——线程已持有部分共享资源,且不释放已持有的资源,同时还在等待其他线程持有的资源。
  • 通俗版:不能硬抢别人手里的筷子,只能等对方主动放手(总不能上去抢别人筷子吧);专业版不可抢占条件——线程持有的资源不能被其他线程强行剥夺,只能由资源持有者主动释放。
  • 通俗版:小明等小红的筷子,小红等小明的筷子,俩人转圈等,形成一个闭环;专业版循环等待条件——多个线程之间形成闭环等待链,每个线程都在等待链中下一个线程持有的资源(如A等B、B等C、C等A)。
四、避免线程死锁的4种方法

结合生活例子讲通俗方法,再补充专业实操建议,新手既能理解,又能知道实际编程中怎么用,不用怕看不懂、用不上。

方法一:统一资源获取顺序(最常用、最好记)

通俗版:定一个死规矩,所有人拿东西都按同一个顺序来。比如吃饭时,规定所有人都先拿左边的筷子,再拿右边的。这样一来,小明先拿了左边的,小红想拿,只能等小明把左边的放下,不会先去拿右边的,自然就不会互相卡壳了。

专业版(编程实操):所有线程在申请多个共享资源(或加锁)时,严格遵循固定不变的顺序。例如,多个线程需要获取锁A和锁B时,统一约定“先获取锁A,再获取锁B”,绝不颠倒顺序,从根源打破循环等待条件。

方法二:一次性申请全部资源,不拿一半等一半

通俗版:吃饭前,先把两根筷子都拿到手,再坐下吃饭;别只拿一根,然后站那等另一根。要是拿不全两根,就一根都不拿,不占着一个工具等另一个。

专业版(编程实操):线程在执行任务前,一次性申请完成所有需要的共享资源;若无法一次性获取全部资源,则放弃已申请到的部分资源(不占有任何资源),等待一段时间后重新申请,打破“占有并等待”条件。

方法三:等待超时,拿不到就主动放弃(不死磕)

通俗版:拿筷子时,规定最多等10秒,10秒内还没拿到另一根,就把自己手里的筷子放下,走开一会儿,再回来重新拿,别一直死等。

专业版(编程实操):为线程获取资源(或加锁)设置超时时间,当线程在超时时间内未获取到所需资源时,主动释放已持有的所有资源,放弃等待并重新尝试执行,打破“不可抢占”和“循环等待”条件。

方法四:拆解业务依赖,打破闭环

通俗版:别搞“小明必须等小红,小红必须等小明”的情况,把要做的事拆解开,不让小工人形成互相等待的闭环,从根上避免死锁。比如吃饭时,让一个人先拿齐两根筷子吃完,再让另一个人拿,避免同时争抢。

专业版(编程实操):优化业务逻辑,拆解线程之间的依赖关系,避免多个线程形成互相等待的闭环。可通过拆分任务、引入中间层资源等方式,打破循环等待链,从根源杜绝死锁。

五、新手核心总结(通俗+专业双版,记这两句就够)
  • 通俗版:死锁就是“几个干活的小工人,各拿工具不撒手,互相等对方的,最后全卡住”;最容易学会的避坑方法,就是“所有人都按同一个顺序拿工具”。
  • 专业版:死锁的本质是线程因争夺共享资源,形成循环等待且无法释放资源的僵持状态;实际编程中,通过“统一资源获取顺序”可解决90%以上的死锁问题。

觉得这篇讲解既好懂、又有专业干货,不绕弯子?关注我!

声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
女人最渴望的2种肢体触摸,99%女人无法抗拒

女人最渴望的2种肢体触摸,99%女人无法抗拒

娱乐洞察点点
2026-05-12 13:21:02
极为罕见!“90后”新婚夫妻同患罕见病瘫痪,孩子出生即夭折

极为罕见!“90后”新婚夫妻同患罕见病瘫痪,孩子出生即夭折

小鹿姐姐情感说
2026-05-12 18:33:25
超级选秀大年大难题!奇才状元签到底该选谁?三大热门各有千秋!

超级选秀大年大难题!奇才状元签到底该选谁?三大热门各有千秋!

田先生篮球
2026-05-11 21:34:34
斯诺克名宿:吴宜泽训练方法和奥沙利文一样,左右开弓能力太恐怖

斯诺克名宿:吴宜泽训练方法和奥沙利文一样,左右开弓能力太恐怖

杨华评论
2026-05-12 17:41:26
美国担心事情发生,山东舰航母船坞大修4个月,原来是为适配歼35

美国担心事情发生,山东舰航母船坞大修4个月,原来是为适配歼35

胖福的小木屋
2026-05-11 23:54:55
重磅!巴萨官宣续约弗里克,2+1合同剑指欧冠冠军!

重磅!巴萨官宣续约弗里克,2+1合同剑指欧冠冠军!

田先生篮球
2026-05-11 21:49:28
方腊仅有8员大将,为何却让梁山损失了70名好汉?原因很简单

方腊仅有8员大将,为何却让梁山损失了70名好汉?原因很简单

掠影后有感
2026-05-11 11:28:59
国际乒联亲宣!64岁蔡振华再破天花板,让刘国梁和乒坛“沉默”了

国际乒联亲宣!64岁蔡振华再破天花板,让刘国梁和乒坛“沉默”了

以茶带书
2026-05-05 17:10:10
为什么:高铁,要涨价20%?

为什么:高铁,要涨价20%?

辰星杂谈
2026-05-12 13:08:13
U17国足利好!邝兆镭复出+生死战或派最强阵 最后一练曝光2大战术

U17国足利好!邝兆镭复出+生死战或派最强阵 最后一练曝光2大战术

我爱英超
2026-05-12 15:55:14
程某某在洗浴中心被抓!

程某某在洗浴中心被抓!

黄河新闻网吕梁
2026-05-12 09:16:59
蚕豆被点名!医生发现:吃得越多,高血压患者寿命或越短?真的吗

蚕豆被点名!医生发现:吃得越多,高血压患者寿命或越短?真的吗

橘子约定
2026-05-12 20:43:26
82岁麦克阿瑟听说印度要打中国,冷笑一声说了句话,把美国人都说愣了

82岁麦克阿瑟听说印度要打中国,冷笑一声说了句话,把美国人都说愣了

老杉说历史
2026-03-21 17:38:23
京东2026年第一季度营收3157亿元 净利润腰斩

京东2026年第一季度营收3157亿元 净利润腰斩

观点机构
2026-05-12 19:25:43
失业后我才明白,只有愚蠢的人,才会花几十万在农村建房子

失业后我才明白,只有愚蠢的人,才会花几十万在农村建房子

三农雷哥
2026-05-12 11:36:27
“黄晓明现身妇产科医院”冲上热搜,工作室紧急辟谣:搞错了!系民营综合医院,因颈椎不舒服去做康复理疗

“黄晓明现身妇产科医院”冲上热搜,工作室紧急辟谣:搞错了!系民营综合医院,因颈椎不舒服去做康复理疗

极目新闻
2026-05-12 14:38:39
午后触及涨停!恒瑞医药与BMS携手开发13款早期创新药,潜在总交易额152亿美元

午后触及涨停!恒瑞医药与BMS携手开发13款早期创新药,潜在总交易额152亿美元

红星资本局
2026-05-12 15:11:22
互联网是有记忆的,她的黑历史一大堆啊!

互联网是有记忆的,她的黑历史一大堆啊!

BenSir本色说
2026-04-15 22:38:07
还会再见吗?詹姆斯18投8中得24分12板,正负值-17全队最低

还会再见吗?詹姆斯18投8中得24分12板,正负值-17全队最低

懂球帝
2026-05-12 14:05:04
“为什么我的妈妈这么老?”9岁女孩因妈妈年龄情绪崩溃,太唏嘘

“为什么我的妈妈这么老?”9岁女孩因妈妈年龄情绪崩溃,太唏嘘

妍妍教育日记
2026-04-30 20:05:20
2026-05-12 22:16:49
小白编程指南
小白编程指南
零基础学编程,分享代码入门教程、实战案例、常用代码片段,带你轻松上手写代码,从小白进阶编程达人。
2文章数 1关注度
往期回顾 全部

科技要闻

宇树发布载人变形机甲,定价390万元起

头条要闻

新电动车到手不足一月频繁自动锁死 老人被摔伤五六次

头条要闻

新电动车到手不足一月频繁自动锁死 老人被摔伤五六次

体育要闻

总是掉链子的“倒霉蛋”,闯进了欧战决赛

娱乐要闻

白鹿风波升级!掉粉20万评论区沦陷

财经要闻

黄仁勋真是被白宫彻底封杀了

汽车要闻

吉利银河“TT”申报图曝光 电动尾翼+激光雷达

态度原创

家居
艺术
数码
手机
时尚

家居要闻

极简主义下的居住场域与空间

艺术要闻

这位画家的油画美人让人惊叹不已!

数码要闻

绿联推出“AP16”16英寸便携屏:2.5K 165Hz +扬声器,1799元

手机要闻

水冷透明机身+真全面屏!红魔 11S Pro+图赏

穿极简风的夏天,是真高级!

无障碍浏览 进入关怀版