//产品类
class Product {
String name;
double price;
boolean flag = false;// 产品是否生产完毕的标识,默认情况是没有生产完成。
}
// 生产者
class Producer extends Thread {
Product p;// 产品
public Producer(Product p) {
super();
this.p = p;
}
public void 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.price);
p.flag = true;
i++;
p.notifyAll();
} else {
try {
p.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
class Customer extends Thread {
Product p;
public Customer(Product p) {
super();
this.p = p;
}
public void run() {
while (true) {
synchronized (p) {
if (p.flag == true)// 产品已经生产完毕
{
System.out.println("消费者生产出了:" + p.name + "价格:" + p.price);
p.flag = false;
p.notifyAll();
} else {
try {
p.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
public class ProducerCustomer {
public static void main(String[] args) {
Product p = new Product();
Producer producer = new Producer(p);
Customer customer = new Customer(p);
producer.start();
customer.start();
}
}
生产者与消费者问题
最新推荐文章于 2022-11-05 23:02:45 发布