阻塞队列实现生产者-消费者模式

Posted 胖子爱你520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻塞队列实现生产者-消费者模式相关的知识,希望对你有一定的参考价值。

public class Test 
  private int queueSize = 10;
  private ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(queueSize);

  public static void main(String[] args) 
    Test test = new Test();
    Producer producer = test.new Producer();
    Consumer consumer = test.new Consumer();
    producer.start();
    consumer.start();
  

  class Consumer extends Thread 
    @Override
    public void run() 
      while (true) 
        try 
          queue.take();
          System.out.println("Consumer : queue.size = " + queue.size());
         catch (InterruptedException e) 

        
      
    
  

  class Producer extends Thread 
    @Override
    public void run() 
      while (true) 
        try 
          queue.put(1);
          System.out.println("Producer : queue.size = " + queue.size());
         catch (InterruptedException e) 

        
      
    
  

使用阻塞队列无需单独考虑同步和线程间通信的问题,实现起来很简单

以上是关于阻塞队列实现生产者-消费者模式的主要内容,如果未能解决你的问题,请参考以下文章

阻塞队列和生产者-消费者模式

通过阻塞队列实现生产者和消费者异步解耦

阻塞队列实现生产者-消费者模式

阻塞队列实现生产者-消费者模式

用阻塞队列实现生产者消费者模式二(多线程消费)

用阻塞队列和线程池简单实现生产者和消费者场景