餐饮哲学家问题是计算机科学中的经典问题之一。我打算使用Java线程来实现它。我尝试使用Java5附带的锁定框架,并使用tryLock()方法来避免死锁。我的实现相当简单。我实现了runnable接口来表示哲学家,并使用executor服务来运行所有这些runnable。 Random random = new Random();
我试图实现一种简单的解决餐饮业问题的方法(与五位哲学家一起),我的解决方案是基于这个逻辑的:for each philosopher如果有正确的筷子,哲学家就会拿走它,如果左撇子也可用的话,哲学家也会拿着它,开始吃不到三秒。然后哲学家就会放下筷子,让其他哲学家都能用。
为了避免重复等待,对于最后一个哲学家,我将先选择左筷子,然后再选择右筷子,然后再进行同样的过程。,出现了一个问题,即