美文网首页
移动架构--9.生产者消费者模式

移动架构--9.生产者消费者模式

作者: 小小秤 | 来源:发表于2018-08-08 09:56 被阅读0次

    本节主要介绍简单的生产一个产品的生产者消费者模式,目的:
    1.理解生产者消费者模式
    2.Java线程间的通信
    3.为手写Android Handler、Looper、Message、MessageQueue架构做准备。

    public class ProducerAndConsumer{
      //1.产品类
      static public class Product{
        //vilatile java 线程频繁的改变value值会在线程本地创造一个变量
        //加volatile保证不会提前消费产生泡沫
        public static volatile String value;
      }
      //2.生产者线程
      static Producer extends Thread{
        Object lock;
        public Producer(Object lock){this.lock=lock;}
        @Override
        public void run(){
          //不断生产产品
          while(true){
            synchronized(lock){//互斥锁
              //产品还没有被消费,等待
              if(Product.value!=null){
                try{lock.wait();}catch(Exception e){e.printStackTrace();}
              }
              //产品已经消费完成,生产新的产品
              Product.value = "NO:"+System.currentTimeMillis();
              System.out.println("生产产品:"+ProductObject.value);
              lock.notify(); //生产完成,通知消费者消费
            }
          }
        }
      }
      //3.消费者线程
      static class Consumer extends Thread{
        Object lock;
        public Consumer(Object lock) {this.lock = lock;}
        @Override
        public void run() {
          while(true){
            synchronized (lock) {
              //没有产品可以消费
              if(Product.value == null){//等待,阻塞
                try {lock.wait();} catch (Exception e) {e.printStackTrace();}
              }
              System.out.println("消费产品:"+ProductObject.value);
              ProductObject.value = null;
              lock.notify(); //消费完成,通知生产者,继续生产
            }
          }
        }
      }
     
    
      public static void main(String[] args) {
        Object lock = new Object();
        new Producer(lock).start();     
        new Consumer(lock).start();
      }
    }

    相关文章

      网友评论

          本文标题:移动架构--9.生产者消费者模式

          本文链接:https://www.haomeiwen.com/subject/tjhavftx.html