《Java核心技术I》死锁

死锁

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

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

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

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

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

待续。。。

相关推荐
27669582921 分钟前
拼多多m端/小程序 encrypt_info
java·小程序·apache·encrypt_info·encrypt_info解密·拼多多小程序·拼多多m端
码不停蹄的玄黓2 分钟前
Java 应用 CPU 过高排查全流程
java·开发语言·python
许彰午4 分钟前
11_Java集合框架概述
java·windows·python
小谢小哥5 分钟前
64-依赖冲突解决详解
java·后端·架构
阿杰AJie8 分钟前
ExcelUtils样式相关工具
java·后端
jsl_jsl_jsl9 分钟前
☕ Java 高并发进阶(三):Java 锁体系全景解析——从 Synchronized 到 AQS 高阶锁
java
love_muming9 分钟前
从 ArrayList 到 LinkedList:Java 集合中数组与链表的深度对比
java·数据结构·链表
荣码12 分钟前
Java后端用LangChain搭大模型应用,我踩了5个坑
java