首页 > 编程语言 > 详细

Java实现生产者消费者模式

时间:2020-09-26 18:08:36      阅读:27      评论:0      收藏:0      [点我收藏+]

 

//表示生产者消费者交互的容器
public class MilkBox {
    public static int bottles = 0;
}
//消费者
public class Consumer implements Runnable {
    private String lock = "";
    public Consumer(String lock) {
        this.lock = lock;
    }
    @Override
    public void run() {
        synchronized (lock){    //表示获取到lock对象的锁
            while(true){
                if(MilkBox.bottles == 0){
                    try {
                        lock.wait();    //释放掉lock对象的锁,进入阻塞队列
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                MilkBox.bottles --;
                System.out.println("消费者消费之后,奶瓶数量为:" + MilkBox.bottles);
                lock.notify();        //通知其他阻塞的线程获得锁
            }
        }
    }
}
//生产者
public class Producer implements Runnable {
    private String lock = "";
    public Producer(String lock){
        this.lock = lock;
    }
    @Override
    public void run() {
        synchronized (lock){
            while(true){
                if(MilkBox.bottles > 0){
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                MilkBox.bottles ++;
                System.out.println("生产者生产后,奶瓶的数量为:" + MilkBox.bottles);
                lock.notify();
            }
        }
    }
}

//测试
public class Test {
public static void main(String[] args) {
String lock = "";
new Thread(new Consumer(lock)).start();
new Thread(new Producer(lock)).start();
  }
}

 

 

Java实现生产者消费者模式

原文:https://www.cnblogs.com/lyuwalle/p/13734853.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!