请问真的会dead lock吗?# JobHunting - 待字闺中
c*t
1 楼
CC150 16.3 是多人用一双筷子的问题,必须先拿到left,再拿到right,才可以吃。
第一个解,筷子用了lock, pickup() lock, putdown() unlock, 下面是多人thread里
面的eat()过程,
public void eat() {
left.pickup();
right.pickup();
chow();
left.putdown();
right.putdown();
}
书上说这个有可能deadlock, 因为一个人拿left,另一个拿了right,就deadlock了
可我觉得当执行left.pickup();如果没有lock,thread就会waiting,就不会执行right.
pickup()吧。我特地测了一下,没有deadlock发生。
多谢!
第一个解,筷子用了lock, pickup() lock, putdown() unlock, 下面是多人thread里
面的eat()过程,
public void eat() {
left.pickup();
right.pickup();
chow();
left.putdown();
right.putdown();
}
书上说这个有可能deadlock, 因为一个人拿left,另一个拿了right,就deadlock了
可我觉得当执行left.pickup();如果没有lock,thread就会waiting,就不会执行right.
pickup()吧。我特地测了一下,没有deadlock发生。
多谢!