生产者和消费者模型

生产者和消费者模型

package com.xgx.demo2;
​
public class Store {
    private int count;
    public final int Size;
    public Store(int size){
        this.Size=size;
        count=0;
    }
    public synchronized void addData(){
        while (count==Size){
            try{
                this.wait();
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
        count++;
        System.out.println(Thread.currentThread().getName()+" add Date:"+count);
        this.notifyAll();
    }
    public synchronized void removeDate(){
        while (count==0){
            try{
                this.wait();
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName()+" remove date:"+count);
        count--;
        this.notifyAll();
    }
}
package com.xgx.demo2;
​
public class Producer1 extends Thread{
    private Store store;
    public Producer1(String name,Store store){
        super(name);
        this.store = store;
    }
    public void run(){
        try{
            for(int i=0;i<5;i++){
                store.addData();
                Thread.sleep(100);
            }
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}
package com.xgx.demo2;
​
public class Customer1 extends Thread{
    private Store store;
    public Customer1(String name,Store store){
        super(name);
        this.store=store;
    }
    public void run(){
        try{
            for(int i=0;i<10;i++){
                store.removeDate();
                Thread.sleep(200);
            }
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}
package com.xgx.demo2;
​
public class Example11_5 {
    public static void main(String[] args) {
        Store s = new Store(5);
        Producer1 p1 = new Producer1("A",s);
        Producer1 p2 = new Producer1("B",s);
        Customer1 c1 = new Customer1("C",s);
        Customer1 c2 = new Customer1("D",s);
        p1.start();
        p2.start();
        c1.start();
        c2.start();
    }
}
A add Date:1
B add Date:2
C remove date:2
D remove date:1
B add Date:1
A add Date:2
C remove date:2
D remove date:1
A add Date:1
B add Date:2
A add Date:3
B add Date:4
D remove date:4
C remove date:3
A add Date:3
B add Date:4
D remove date:4
C remove date:3
C remove date:2
D remove date:1//结果所示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值