//库存函数,保存着库存的信息Storage.java
public classStorage {//模拟库存
public Integer num=1;
}//生产者函数 product.java/************************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
FileName: Customer.java
Author: Light
Version : version1.0
Date: 2018/7/11
Description: 生产者进行生产,生产者需要在消费者进行消费后生产,模拟的内存只有一块,
当没有消费时,会提醒消费者消费,唤醒消费者进程 // 模块描述
Version: 1.0// 版本信息
Function List: // 主要函数及其功能
1.
History:
// 历史修改记录
Light 2018/7/11 1.0 build this moudle
***********************************************************/
public class Product implementsRunnable{privateStorage storage;publicProduct(Storage storage) {super();this.storage =storage;
}
@Overridepublic voidrun() {//TODO Auto-generated method stub
while(true){synchronized(storage) {if(this.storage.num<1){//模拟生产
this.storage.num++;
System.out.println("生产一个");//唤醒队列中所有进程
this.storage.notifyAll();
}else{try{//进入等待队列
this.storage.wait();
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}//消费者函数 Customer.java/************************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
FileName: Customer.java
Author: Light
Version : version1.0
Date: 2018/7/11
Description: 消费者进行消费,消费者需要在生产者进行生产再进行消费,
当没有生产时,会提醒生产者生产,唤醒生产者进程 // 模块描述
Version: 1.0// 版本信息
Function List: // 主要函数及其功能
1.
History:
// 历史修改记录
Light 2018/7/11 1.0 build this moudle
***********************************************************/
public class Customer implementsRunnable {privateStorage storage;publicCustomer(Storage storage) {super();this.storage =storage;
}/*** 重写run()
*@author[Light](必须)
*@see[run()](可选)
*@since[version 1.0] (必须)*/@Overridepublic voidrun() {//TODO Auto-generated method stub
while(true){//加锁
synchronized(storage) {//判断是否生产者进行了生产
if(this.storage.num>=1){//模拟消费
this.storage.num--;
System.out.println("消费一个");//唤醒队列所有进程
this.storage.notifyAll();
}else{try{//等待
this.storage.wait();
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}//主函数 MyTest.java/************************************************************
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.
FileName: MyTest.java
Author: Light
Version : version1.0
Date: 2018/7/11
Description: 消费生产进程模拟 // 模块描述
Version: 1.0// 版本信息
Function List: // 主要函数及其功能
1.
History:
// 历史修改记录
Light 2018/7/11 1.0 build this moudle
***********************************************************/
public classMyTest {public static voidmain(String[] args) {
//库存
Storage storage=newStorage();
//生产者
Product p1=newProduct(storage);
//两名消费者
Customer c1=newCustomer(storage);
Customer c2=newCustomer(storage);
Thread t1=newThread(p1);
Thread t2=newThread(c1);
Thread t3=newThread(c2);
t1.start();
t2.start();
t3.start();
}
}