[Java] 纯文本查看 复制代码
/*
* 生产者类
*/
class Producer extends Thread {
// 产品
Product p;
public Producer(Product p) {
this.p = p;
}
@Override
public void run() {
// 重写run()
int i = 0;
while (true) {
synchronized(p) {
if (p.flag == false) {
if (i % 2 == 0) {
p.name = "苹果";
p.price = 6.5;
} else {
p.name = "香蕉";
p.price = 2.0;
}
System.out.println("生产者生产出了" + p.name + " : " + p.name + "价格是" + p.price);
p.flag = true;
i++;
p.notifyAll();// 唤醒消费者去消费
} else {
// 已经生产 完毕,等待消费者先去消费
try {
p.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
[Java] 纯文本查看 复制代码
package day_17_duxiancheng;
/*
* 消费者类
*/
public class Customer extends Thread{
Product p;//产品
//构造方法
public Customer(Product p) {
this.p = p;
}
@Override
public void run() {
while(true){
synchronized (p) {
if(p.flag==true){
System.out.println("消费者消费了一个"+p.name+" : "+p.name+"的价格是"+p.price+"元");
p.flag=false;
p.notifyAll();
}else{
//等待生产者生产产品
try {
p.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}