龙空技术网

java死锁你了解吗?

小瓜瓜666 115

前言:

今天兄弟们对“java死锁的四个条件”大约比较关注,咱们都需要学习一些“java死锁的四个条件”的相关文章。那么小编也在网上搜集了一些有关“java死锁的四个条件””的相关知识,希望小伙伴们能喜欢,你们一起来学习一下吧!

我们先看一下死锁的特点:

不出现异常,也不会出现错误,程序就一直僵持在那里,这种错误很难调试。

个人理解:死锁就是线程在锁池里面一直找不到需要的对象锁,就一直在锁池里面等待不出来,所以就导致了死锁。 我们可以手动写一个死锁。

代码如下图:

第一个内部类

第二个内部类

测试类

根据上面的代码我们可以发现,synchronized在程序开发中最好不要嵌套使用,一不小心就会导致死锁现象发生。

java 死锁产生的四个必要条件:

1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。4、循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路

标签: #java死锁的四个条件