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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 中国力量 高级黑马   /  2014-6-5 21:58  /  1245 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

同步函数中的锁不是都是一样的吗?为何这个死锁会不一样呢?麻烦高手回答


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

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

4 个回复

倒序浏览
同一个锁就不会出现死锁了,也就是说当线程1拿到锁的时候,线程2是进不去的
而两个锁嵌套时
    当线程1拿到a锁,线程2拿到b锁,就会出现死锁的情况。
回复 使用道具 举报
a110bc 发表于 2014-6-5 23:19
同一个锁就不会出现死锁了,也就是说当线程1拿到锁的时候,线程2是进不去的
而两个锁嵌套时
    当线程1拿 ...

不是说同步函数中只能一个锁吗?为何会出现两个在这个例子中?
回复 使用道具 举报
中国力量 发表于 2014-6-6 20:47
不是说同步函数中只能一个锁吗?为何会出现两个在这个例子中?

你这不是同步函数,你那是4个同步代码块。4个同步代码块共用2个个锁。
四个厕所。两把钥匙。但是厕所嵌套了。
第一个人:进入厕所1(使用locka钥匙),他还要进入厕所2(1,2嵌套在一起),但是没有lackb钥匙(被另一人使用)。
第二个人:进入厕所3(使用lockb钥匙),他还要进入厕所4(3,4嵌套在一起),但是没有lacka钥匙(被另一人使用)。
所以死锁了,死了,憋死了。
回复 使用道具 举报
谭荣强 发表于 2014-6-8 05:21
你这不是同步函数,你那是4个同步代码块。4个同步代码块共用2个个锁。
四个厕所。两把钥匙。但是厕所嵌套 ...

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