zoukankan      html  css  js  c++  java
  • Java实现生产者消费者模式

    //表示生产者消费者交互的容器
    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();
      }
    }

     
  • 相关阅读:
    汇编语言(王爽) 实验九
    汇编语言(王爽)实验十
    leetcode longest common prefix(easy) /java
    leetcode container-with-most-water(medium) /java
    jdbc 驱动设置
    天上的星星都洒在我身上(mysql重装失败指南)
    leetcode palindrome number(easy) /java
    异常处理
    递归函数
    序列化模块
  • 原文地址:https://www.cnblogs.com/lyuwalle/p/13734853.html
Copyright © 2011-2022 走看看