public class Product { private String Sp; private String name; //标识符 boolean flay = false; public Product() { } public Product(String sp, String name) { Sp = sp; this.name = name; } public String getSp() { return Sp; } public void setSp(String sp) { Sp = sp; } public String getName() { return name; } public void setName(String name) { this.name = name; } public synchronized void setProcduct(String sp ,String name){ if(flay){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.setSp(sp); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } this.setName(name); System.out.println("生产者生产了: "+getSp()+getName()); flay=true; notify(); } public synchronized void get(){ if(!flay){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("消费者消费了:"+getSp()+getName()); flay=false; notify(); } }
生产者
public class SCZ implements Runnable {
private Product product;
public SCZ(Product product) {
this.product = product;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
if (i%2==0) {
product.setProcduct("旺仔","牛逼糖");
}else {
product.setProcduct("长白山","矿泉水");
}
}
}
}
消费者
public class XFZ implements Runnable {
Product product;
public XFZ(Product product) {
this.product = product;
}
@Override
public void run() {
for (int i = 0; i <10 ; i++) {
product.get();
}
}
}
测试类
public class Test {
public static void main(String[] args) {
Product product = new Product();
SCZ s=new SCZ(product);
XFZ x =new XFZ(product);
new Thread(s).start();
new Thread(x).start();
}
}