《Java核心技术I》死锁

死锁

  1. 账户1:200元
  2. 账户2: 300元
  3. 线程1:从账号1转300到账户2
  4. 线程2:从账户2转400到账户1

如上,线程1和线程2显然都被阻塞,两个账户的余额都不足以转账,两个线程都无法执行下去。

有可能会因为每一个线程要等待更多的钱款存入而导致所有线程都被阻塞,这样的状态称为死锁(deadlock)。通俗的说两个或多个线程互相持有对方释放锁的必要资源,导致都无法执行。

如果把之前的例子中,每次转账至多1000的限制去掉,很快就会发生死锁,试试看。

提示:当程序挂起时,按下Ctrl+\,将得到一个线程转储,会列出所有线程。可以运行jconsole并参考线程面板。

待续。。。

相关推荐
0x3F(小茶)2 分钟前
嵌入式C设计模式完全指南(基于《C嵌入式编程设计模式》)
c语言·开发语言·单片机·嵌入式硬件·设计模式
灰鲸广告联盟8 分钟前
新老用户广告价值不同?差异化策略如何实现收益最大化
android·开发语言·flutter·ios
周杰伦fans10 分钟前
C# CAD 二次开发:无需启动 AutoCAD 实现 DWG 转 DXF 的完整技术指南
开发语言·c#
qq_2837200516 分钟前
2026 最新 Python+AI 零基础入门全教程 :从零搭建人工智能完整项目
开发语言·人工智能·python
郑洁文18 分钟前
学生信息管理系统
java·毕业设计·学生信息管理系统
时尚IT男19 分钟前
Python发票识别实战:从PDF中精准提取发票号与(小写)¥金额
开发语言·python·pdf
剑挑星河月21 分钟前
31.下一个排列
java·算法·leetcode
basketball61621 分钟前
Go 语言从入门到进阶:6. 一文彻底吃透结构体(Struct)
开发语言·unity·golang
ch.ju21 分钟前
Java Programming Chapter 4——Private attribute
java·开发语言