BlockingQueue实现生产者、消费者模式
2017-04-28 09:50
190 查看
BlockingQueue可以作为线程间数据共享通道,它会让服务线程在队列为空时进行等待,而当有新消息进入队列后,自动将线程唤醒。
向队列添加数据可以使用offer()方法或put()方法,它们都是向队列尾部添加元素,区别在于如果队列满了offer返回false,而put会一直等待。相对的取出元素可以使用poll()方法或take()方法,它们都从队列头部获得一个元素,区别在于如果队列为空poll返回null,而take一直等到有新元素添加。put和take方法体现了blocking(阻塞)的用途。
以下是BlockingQueue的实现类之一LinkedBlockingQueue的put及take方法
红框中代码含义是当队列满时,线程进行等待
使用LinkedBlockingQueue来实现生产者、消费者模式会简单很多,简单示例如下:
注意这里队列长度为1,以下是输出:
向队列添加数据可以使用offer()方法或put()方法,它们都是向队列尾部添加元素,区别在于如果队列满了offer返回false,而put会一直等待。相对的取出元素可以使用poll()方法或take()方法,它们都从队列头部获得一个元素,区别在于如果队列为空poll返回null,而take一直等到有新元素添加。put和take方法体现了blocking(阻塞)的用途。
以下是BlockingQueue的实现类之一LinkedBlockingQueue的put及take方法
红框中代码含义是当队列满时,线程进行等待
使用LinkedBlockingQueue来实现生产者、消费者模式会简单很多,简单示例如下:
注意这里队列长度为1,以下是输出:
相关文章推荐
- BlockingQueue实现生产者-消费者模式
- 使用BlockingQueue实现生产者和消费者模式
- Queue、BlockingQueue以及用BlockingQueue实现生产者/消费者模式
- Java利用BlockingQueue实现生产者和消费者模式
- java消费者生产者模式及JDK之阻塞队列LinkedBlockingQueue实现
- Java多线程-工具篇-BlockingQueue(实现生产者和消费者模式)
- 使用BlockingQueue实现生产者,消费者模式
- 阻塞队列BlockingQueue实现生产者-消费者模式值桌面搜索
- 利用LinkedBlockingQueue实现生产者-消费者模式
- java使用LinkedBlockingQueue实现 生产者 消费者模式
- 架构设计:生产者/消费者模式 第6页:环形缓冲区的实现
- 利用PPL实现复杂的多线程模式的生产者-消费者
- Java阻塞队列BlockingQueue实现生产者消费者-只有代码-不讲原理
- 信号量,互斥锁实现 生产者-消费者模式
- 用BlockingQueue实现一个简单的生产者-消费者模型
- 架构设计:生产者/消费者模式 第6页:环形缓冲区的实现
- 3种消费者生产者实现方式 {signal, blockingQueue, synchronized }
- Java线程间同步实现生产者-消费者模式
- Ruby简单的生产者,消费者模式的实现
- 用ACE实现生产者与消费者模式