问题描述
图1:假设线程1获得书的锁,然后休眠1秒,将cpu给其他线程,线程2就拿到了笔的锁,所以就形成一个死锁,这个可以理解
图2:当线程1先执行,它先拿到书锁,然后休眠一秒,但是并不会释放锁的使用权,然后线程2拿到笔锁,按道理讲线程1不应该拿不到笔锁吗?
图1:假设线程1获得书的锁,然后休眠1秒,将cpu给其他线程,线程2就拿到了笔的锁,所以就形成一个死锁,这个可以理解
图2:当线程1先执行,它先拿到书锁,然后休眠一秒,但是并不会释放锁的使用权,然后线程2拿到笔锁,按道理讲线程1不应该拿不到笔锁吗?
你的第二个图,本子和笔没有要求都要拿到,所以不会形成死锁,等待1秒只是执行的慢点而已。说明白点就是说,我要写字不要求笔和本子都有才能写,有笔我就在地上写,不等拿到本子,我有本子没有笔也能写。明白了吗?说经典的哲学家就餐问题,五个人中间放四支筷子,原文是要同时拿到左右手两只筷子才能吃饭,你例子中的意思就是拿一根筷子也能吃,只是吃的多少的问题,不存在,每人拿一根等别人放下另一根才能吃导致谁都吃不上饭。