A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看了死锁,感觉似懂非懂。要是用一句简单的概念描述一下就好了

9 个回复

倒序浏览
我的理解就是同步锁里还有同步锁,然后线程1拿到A锁又要去拿B锁,线程2拿到B锁又要去拿A锁,如果都不释放手里的锁,那么就会产生死锁。
回复 使用道具 举报
当一个锁占有现在的资源,并且要求下一个资源的时候。下一个资源却被别的锁所占据,这个时候就产生死锁。
回复 使用道具 举报
形象的来个比喻,去银行钱库有两个通道,第一个通道分别依次通过A门、B门,另外一个通道分别依次通过B门、A门,这时银行派工作人员甲拿着A门锁走一通道,工作人员乙拿着B门锁去第二个通道,而当俩人分别通过第一门后,而相方又互相不换锁,就出现了谁也进不去取不出钱。
回复 使用道具 举报
举个简单的例子,假如现在有两个人非常饥饿了,非常的想要吃饭,你知道,通常我们吃饭需要用筷子和饭碗,问题来了,假设这里只有一双筷子和一个饭碗,你们两人一人得到了一样(假设一人得到了筷子,而另一人得到了饭碗),但是你们现在非常的想吃饭,但是想吃饭必须筷子和饭碗都具备,于是你们互相要求对方把相应的道具给自己,但是都由于都非常想吃饭,为了能够尽快的吃到饭,所以都不想给筷子或者饭碗给对方,所以就这样僵持不下,到最后两个人都没有吃到饭,所以最后就饿死了(哈哈。。。)
上述中两个人便是两个进程,或者线程,筷子和饭碗就相当于CPU资源,死锁的意思就是说两个进程彼此都有彼此需要的资源,但是都不释放自己所拥有的资源,导致两个进程得不到执行,僵持下去,形成死锁
回复 使用道具 举报
楼主不要急, synchronized的应用比较抽象,建议先把死锁的代码敲熟练。学习到第12天的教程,JDK.5升级版,看过java.util.concurrent.locks 包里的lock()、unlock()方法后,再重新回来看死锁的问题,就容易理解多了。
回复 使用道具 举报
两者都占用着资源,又都需要对方的资源 才能进行下一步。
回复 使用道具 举报
双方都需要对方的锁,可是双方又都不放自己的锁,就这么一直僵持着,程序无法再向下执行
回复 使用道具 举报
各位大神 学习了
回复 使用道具 举报
目前看不懂  学习一下!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马