小言_互联网的博客

并发中死锁的形成条件及处理

329人阅读  评论(0)

跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。

作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书写作、运动、画画。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。

死锁

死锁是一种无限的互相等待的状态,两个或两个以上的线程或进程构成一个互相等待的环状。以两个线程为例,线程一持有A锁同时在等待B锁,而线程二持有B锁同时在等待A锁,这就导致两个线程互相等待无法往下执行。现实生活中一个经典的死锁情形就是四辆汽车通过没有红绿灯的十字路口,假如四辆车同时到达中心的,那么它们将形成一个死锁状态。每辆车拥有自己车道上的使用权,但同时也在等另外一辆汽车让出另外一条道的使用权。

死锁例子

下面看一个死锁的例子,该例子中一共有lock1和lock2两个锁。线程一启动后先尝试获取lock1锁,成功获取lock1后再继续尝试获取lock2锁。而线程二则是先尝试获取lock2锁,成功获取lock2锁后再继续尝试获取loc


转载:https://blog.csdn.net/wangyangzhizhou/article/details/108399563
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场