在《java 同步和互斥【用具体程序说明】 》这篇文章的基础上,来实现下面的程序
桌上有一个空盘子,只允许放一个水果。爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时,一次只能放一只水果。
下面是程序的具体实现代码,在写这个程序的时候,有点小问题,纠结了很长时间,于是在csdn论坛上发表帖子终于得到了解决
先说说涉及到的类的作用,首先Fruits作为一个水果的父类,Apple和Orange是Fruits类的扩展类。CriticalResources类是临界资源类,作为缓冲区用,里面封装了数组大小为一的Fruits数组,可以看成“盘子”;ProducerOrange为生产橘子的类 ProducerApple为生产桔子的类 ConsumerApple(消费苹果的类) ConsumerOrange(消费桔子的类)
水果类代码如下
package com.bankht.producerCustomer;
public class Fruits {
private String name;
public Fruits(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
public Fruits() {
super();
}
}
package com.bankht.producerCustomer;
/**
* @author zhuyong
* 创建时间:2012-6-6 上午09:46:14
* 类说明 :
*/
public class Orange extends Fruits {
public Orange() {
super();
// TODO Auto-generated constructor stub
}
public Orange(String name) {
super(name);
// TODO Auto-generated constructor stub
}
}