- 博客(0)
- 资源 (1)
- 收藏
- 关注
哲学家问题(转发:谢谢元作者)
/筷子类
class Bamboo {
boolean bState; //互斥信号量
JLabel bLabel; //显示筷子的JLabel
ImageIcon emptyImage,bambooImage; //被用时为empty图片,否则为筷子图片
public Bamboo(JLabel bLabel, ImageIcon image) {
emptyImage=new ImageIcon("空的.jpg");
this.bLabel=bLabel;
this.bambooImage=image;
bState=true; //一开始都设筷子为可用状态
}
public synchronized void gainBamboo() {
while(!bState) { //如果此筷子已被用,则等待
try {
wait();
}catch(Exception e) {
e.printStackTrace();
}
}
bLabel.setIcon(emptyImage); //获得筷子,并把筷子所代表 的图片设为空
bState=false; //把此筷子的状态设为已被用了
}
public synchronized void takeBamboo() { //放下筷子,把筷子状态设为可用
bState=true;
bLabel.setIcon(bambooImage);
notify(); //唤醒其他在等待的线程,如果有等待此筷子的线程,则可以继续判断
}
}
2011-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人