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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 老梁 中级黑马   /  2014-6-12 19:22  /  1539 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近看到Java的多线程部分,对于死锁不是很理解,各位能说说对死锁的理解吗?

11 个回复

倒序浏览
A拥有B的锁,B拥有A的锁,这个时候容易产生死锁,你同步嵌套一下同步,但是锁的对象不同,楼主你试试看,如果没有出现死锁,加个while就行

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
两个方法有两把钥匙,但是他们要执行线程都需要自己和对方的钥匙,当两个人各自拿了一个都愿意给对方的时候,就形成了死锁
回复 使用道具 举报
liujie445012100 发表于 2014-6-12 20:43
A拥有B的锁,B拥有A的锁,这个时候容易产生死锁,你同步嵌套一下同步,但是锁的对象不同,楼主你试试看,如 ...

好的,谢谢
回复 使用道具 举报
alive 发表于 2014-6-12 22:23
两个方法有两把钥匙,但是他们要执行线程都需要自己和对方的钥匙,当两个人各自拿了一个都愿意给对方的时候 ...

两个人各自拿了一把钥匙,在都不愿意给对方的情况下,才能形成死锁吧?
回复 使用道具 举报
二楼正解。楼主自己写一个死锁出来就理解了
回复 使用道具 举报
很简单,两扇门,各自拿一把钥匙,但却被锁在对方拿钥匙的门里,所以都出不来了。

程序里是,各自占用着对方需要的资源,导致双方都无法运行下去。
回复 使用道具 举报
:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 导致死锁.
回复 使用道具 举报
大致上说,就是A线程去调用B类中的一上互斥方法,进方法的时候它把锁拿走了,其他的线程就进不去对吧,然后B类中的那个方法是个死循环,那样的话A线程就永远都出不了方法,那其他线程也就永远进不了这个方法,产生死锁
回复 使用道具 举报
二楼正解!,毕向东视频中有详细解释!
回复 使用道具 举报
alive 中级黑马 2014-6-13 23:40:32
11#
老梁 发表于 2014-6-13 08:52
两个人各自拿了一把钥匙,在都不愿意给对方的情况下,才能形成死锁吧? ...

嗯 两个人各自拿了一把钥匙 肯定是一人一把了:lol
回复 使用道具 举报
alive 发表于 2014-6-13 23:40
嗯 两个人各自拿了一把钥匙 肯定是一人一把了

理解了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马