黑马程序员技术交流社区

标题: 死锁问题 [打印本页]

作者: 中国力量    时间: 2014-6-5 21:58
标题: 死锁问题
同步函数中的锁不是都是一样的吗?为何这个死锁会不一样呢?麻烦高手回答


)H{U$6Y_I3H%0O)4]IBMDUK.jpg (104.03 KB, 下载次数: 2)

)H{U$6Y_I3H%0O)4]IBMDUK.jpg

作者: a110bc    时间: 2014-6-5 23:19
同一个锁就不会出现死锁了,也就是说当线程1拿到锁的时候,线程2是进不去的
而两个锁嵌套时
    当线程1拿到a锁,线程2拿到b锁,就会出现死锁的情况。
作者: 中国力量    时间: 2014-6-6 20:47
a110bc 发表于 2014-6-5 23:19
同一个锁就不会出现死锁了,也就是说当线程1拿到锁的时候,线程2是进不去的
而两个锁嵌套时
    当线程1拿 ...

不是说同步函数中只能一个锁吗?为何会出现两个在这个例子中?
作者: 谭荣强    时间: 2014-6-8 05:21
中国力量 发表于 2014-6-6 20:47
不是说同步函数中只能一个锁吗?为何会出现两个在这个例子中?

你这不是同步函数,你那是4个同步代码块。4个同步代码块共用2个个锁。
四个厕所。两把钥匙。但是厕所嵌套了。
第一个人:进入厕所1(使用locka钥匙),他还要进入厕所2(1,2嵌套在一起),但是没有lackb钥匙(被另一人使用)。
第二个人:进入厕所3(使用lockb钥匙),他还要进入厕所4(3,4嵌套在一起),但是没有lacka钥匙(被另一人使用)。
所以死锁了,死了,憋死了。

作者: 中国力量    时间: 2014-6-8 22:02
谭荣强 发表于 2014-6-8 05:21
你这不是同步函数,你那是4个同步代码块。4个同步代码块共用2个个锁。
四个厕所。两把钥匙。但是厕所嵌套 ...

经典 谢了啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2