第一步:商品类
package Java设计模式.生产者消费者设计模式;
public class Good {
String name;
double price;
public Good(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Good{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
第二步:判断是否有产品类
package Java设计模式.生产者消费者设计模式;
public class Flag {
//是否生成产品
public static boolean shouldProduct = true;
}
第三步:生产者类
package Java设计模式.生产者消费者设计模式;
public class Producer extends Thread{
private Good good;
public Producer(Good good) {
this.good = good;
}
@Override
public void run() {
while (true) {
synchronized ("") {
if(Flag.shouldProduct==true)
{
this.good.name="炒鱿鱼";
System.out.println("生产者【"+Thread.currentThread().getName()+"】生成了一个产品【"+this.good.name+"】");
Flag.shouldProduct=false;
"".notifyAll();
}
else
{
try {
"".wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
第四步:消费者类
package Java设计模式.生产者消费者设计模式;
public class Consumer implements Runnable {
private Good good;
public Consumer(Good good) {
this.good = good;
}
@Override
public void run() {
while (true)
{
synchronized ("")
{
if(Flag.shouldProduct==false)
{
System.out.println("消费者【"+Thread.currentThread().getName()+"】消费了一个产品【"+this.good.name+"】");
Flag.shouldProduct=true;
"".notifyAll();
}
else
{
try {
"".wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
第五步:测试类
package Java设计模式.生产者消费者设计模式;
public class Test {
public static void main(String[] args) {
Good good=new Good("炒鱿鱼",2000);
Thread p1=new Thread(new Producer(good),"王大");
Thread p2=new Thread(new Producer(good),"李二");
Thread c1=new Thread(new Consumer(good),"张三");
Thread c2=new Thread(new Consumer(good),"麻丝");
p1.start();
p2.start();
c1.start();
c2.start();
}
}