《Java核心技术I》死锁

死锁

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

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

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

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

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

待续。。。

相关推荐
鸿芯微控科技2 小时前
压电点胶阀出胶量不稳定怎么排查?驱动波形、背压、点胶重量与Python分析
开发语言·python·压电点胶阀·精密点胶·点胶重量·流体控制
原野池予2 小时前
深入Java集合框架:HashMap源码解析(JDK 8)
java·开发语言
古法安卓2 小时前
Android-Direct Boot 阶段与 getFilesDir() 路径变更问题深度分析
android·java·android studio
-今昭-2 小时前
Logstash 管理
java·服务器·前端
测试运维日常笔记2 小时前
VMware vSphere、ESXi 与 vCenter Server:核心概念与关系详解
java·开发语言
风流 少年3 小时前
Spring AI 2.0:Flux
java·人工智能·spring
m0_547486663 小时前
《面向对象与Java程序设计》全套PPT课件2026
java·开发语言
星恒随风3 小时前
C++ 红黑树封装(二):迭代器、const_iterator 与 operator[] 完整实现 mymap 和 myset
开发语言·c++·状态模式
jason成都3 小时前
ignav-next|Java 层封装 GNSS/INS 组合导航框架,隔离 RTKLIB 与 INS 内核,双模块独立演进、最小侵入
java·开发语言
抓不住时间的沙3 小时前
butterfly主题美化,打造属于自己的个性博客
java·开发语言·前端·javascript·node.js·github