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();
      }
    }

     
  • 相关阅读:
    Google服务
    Duwamish深入剖析配置篇
    Duwamish Online SQL XML 分类浏览
    数据库操作类
    搜索引擎Google的小秘密
    微软.NET经典架构例程Duwamish 7.0分析
    一个ASP.NET中使用的MessageBox类
    轻松解决页面回传后页面滚动到顶端
    Duwamish 7 初探——数据流程
    使用ADO.NET的最佳实践
  • 原文地址:https://www.cnblogs.com/lyuwalle/p/13734853.html
Copyright © 2011-2022 走看看