《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 分钟前
Rust 应用状态(App State)管理:类型安全与并发控制的艺术
开发语言·安全·rust
Java&Develop4 分钟前
IDEA报错:前言中不允许有内容
java
软件架构师-叶秋6 分钟前
spring boot入门篇之开发环境搭建
java·spring boot·后端
无敌最俊朗@29 分钟前
SQLite 约束 (Constraints) 面试核心知识点
java·开发语言·jvm
QX_hao44 分钟前
【Go】--接口(interface)
开发语言·后端·golang
憨憨崽&1 小时前
C语言、Java、Python 的选择与未来发展以及学习路线
java·c语言·python
西西学代码1 小时前
Flutter---个人信息(1)---实现简单的UI
开发语言·javascript·flutter
superman超哥1 小时前
仓颉语言中正则表达式引擎的深度剖析与实践
开发语言·后端·仓颉
在坚持一下我可没意见1 小时前
Java 网络编程:TCP 与 UDP 的「通信江湖」(基于UDP回显服务器)
java·服务器·开发语言·tcp/ip·udp·java-ee
少爷晚安。1 小时前
Java零基础学习完整笔记,基于Intellij IDEA开发工具,笔记持续更新中
java·笔记·学习