zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java 生产者和消费者——BlockingQueue方式详解编程语言

JAVA编程语言 详解 方式 消费者 生产者 BlockingQueue
2023-06-13 09:11:50 时间

java 生产者和消费者——Synchronized方式 java 生产者和消费者——ReentrantLock方式 java 生产者和消费者——BlockingQueue方式

利用阻塞队列如下特性实现生产者和消费者模式

put 添加一个元素 如果队列满,则阻塞 take 移除并返回队列头部的元素 如果队列为空,则阻塞
/** 

 * 生产者消费者问题: 容器最多放5个商品;当容器未装满时,生产者一直生产商品并放入容器中,当容器中有商品时,消费者就一直消费商品; 情景: 

 * 生产者生产20个商品并被消费者消费 

public class ProducerAndComsumerDemo {


ProducerAndComsumerDemo demo = new ProducerAndComsumerDemo(); new Thread(demo.new Producer()).start(); new Thread(demo.new Consumer()).start(); class Producer implements Runnable {
queue.put(i); System.out.println("生产者 生产前 总共有 " + pruductsSum + " 个商品"); pruductsSum++; System.out.println("生产者 生产后 总共有 " + pruductsSum + " 个商品"); System.out.println("---------------------------------------------------------------------------"); } catch (InterruptedException e) { e.printStackTrace(); class Consumer implements Runnable {
System.out.println("消费 " + take); System.out.println("消费者 消费前 总共有 " + pruductsSum + " 个商品"); pruductsSum--; System.out.println("消费者 消费后 总共有 " + pruductsSum + " 个商品"); System.out.println("---------------------------------------------------------------------------"); } catch (InterruptedException e) { e.printStackTrace();

运行结果的其中一次日志

生产者 生产前 总共有 0 个商品 

生产者 生产后 总共有 1 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 1 个商品 

生产者 生产后 总共有 2 个商品 

--------------------------------------------------------------------------- 

消费 0 

消费者 消费前 总共有 2 个商品 

消费者 消费后 总共有 1 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 1 个商品 

生产者 生产后 总共有 2 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 2 个商品 

生产者 生产后 总共有 3 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 3 个商品 

生产者 生产后 总共有 4 个商品 

--------------------------------------------------------------------------- 

消费 1 

消费者 消费前 总共有 4 个商品 

消费者 消费后 总共有 3 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 3 个商品 

生产者 生产后 总共有 4 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 4 个商品 

生产者 生产后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 2 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 4 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 3 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 4 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 5 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 6 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

--------------------------------------------------------------------------- 

消费 7 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 8 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 9 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 4 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 10 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 4 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 11 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 4 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 12 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 13 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 6 个商品 

--------------------------------------------------------------------------- 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 14 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 4 个商品 

--------------------------------------------------------------------------- 

生产者 生产前 总共有 5 个商品 

生产者 生产后 总共有 5 个商品 

--------------------------------------------------------------------------- 

消费 15 

消费者 消费前 总共有 5 个商品 

消费者 消费后 总共有 4 个商品 

--------------------------------------------------------------------------- 

消费 16 

消费者 消费前 总共有 4 个商品 

消费者 消费后 总共有 3 个商品 

--------------------------------------------------------------------------- 

消费 17 

消费者 消费前 总共有 3 个商品 

消费者 消费后 总共有 2 个商品 

--------------------------------------------------------------------------- 

消费 18 

消费者 消费前 总共有 2 个商品 

消费者 消费后 总共有 1 个商品 

--------------------------------------------------------------------------- 

消费 19 

消费者 消费前 总共有 1 个商品 

消费者 消费后 总共有 0 个商品 

--------------------------------------------------------------------------- 

仅此记录

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18737.html

cjavaxml