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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

对于这个抢筷子吃肉不是很理解。
有没有大牛给解释一下。

5 个回复

倒序浏览
dubei1993 来自手机 中级黑马 2016-6-20 00:04:42
沙发
死锁的原因是同步嵌套,也就是说至少有两把锁。但是,如果run方法只有这两把锁,会直接走到底,还是不会死锁。现在有两把锁ab,if先走a再走b。else先走b再走a。定义两个线程分别走if,else。结果锁很有可能锁在一起了。但也不是一定会锁一起,因为线程的运行靠抢的
回复 使用道具 举报
  1. <blockquote>class Test implements Runnable
复制代码

额,我理解的是:肉就是线程要操作的资源,线程就是人,筷子就是线程锁(一根筷子代表一个);筷子只有一双肉只有一块,而人有多个,人要吃肉就必须要一双筷子,当两个线程锁交叉锁住同意资源时(上面代码所展示的),假设当t1线程运行true拿到a锁要进b锁的时候t2线程拿到b锁要进a锁;由于此时t1,t2都拿到了其中不同的锁想要进另一个;就会产生死锁,线程就无法继续执行(因为拿不到相应的锁),就会导致程序停在那;就好比那个人都想拿到那双筷子去吃那块肉,而一人只有一只,又不想给对方.
以上就是我的理解,希望能帮到楼主.
回复 使用道具 举报
2个熊孩子同一个时间抢电脑玩,一个人拿到鼠标,一个人拿到键盘。结果谁都玩不了。
假如有个家长(同步机制)来管理,每个小孩玩5分钟,那么每个小孩都能玩到电脑。
回复 使用道具 举报
Ake丶 发表于 2016-6-21 21:45
2个熊孩子同一个时间抢电脑玩,一个人拿到鼠标,一个人拿到键盘。结果谁都玩不了。
假如有个家长(同步机制 ...

要深入理解,可以去拿本操作系统看看
回复 使用道具 举报
Ake丶 发表于 2016-6-21 21:45
2个熊孩子同一个时间抢电脑玩,一个人拿到鼠标,一个人拿到键盘。结果谁都玩不了。
假如有个家长(同步机制 ...

要深入理解,可以去拿本操作系统看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马