java并发编程实战读书笔记4--生产者消费者模式和队列

Posted 郭梧悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java并发编程实战读书笔记4--生产者消费者模式和队列相关的知识,希望对你有一定的参考价值。

1、BlockingQueue简化了生产者-消费者设计的实现过程,支持任意数量的生产者和消费者。常见的实现就是线程池与工作队列的组合,在Executor任务执行框架中就体现了这种模式。

2、在构建高可靠的应用程序时,有界队列是一种强大的资源管理工具:它能抑制并防止产生过多的工作项,使应用程序在负荷过载的情况下变得更加健壮。

3、生产者-消费者模式能够将生产者和消费者的代码彼此解耦,但是他们的行为仍然会通过共享工作队列耦合在一起。
4、LinkedBlockingQueue和ArrayBlockingQueue是FIFO队列。所有的消费者有一个共享的工作队列。

5、SynchronousQueue并不是一个真正的队列。因为它不为队列中的元素维护存储空间。它真正维护的是一组线程。这些线程等待着元素的加入和删除。可以简单的理解为生产者生产的东西不经过队列,直接交付到消费者手里。降低了数据从生产者移动到消费者的延迟。就是因为没有存储功能,其put和get会抑制阻塞,直到有线程已经准备好参与到交付过程中。仅当有足够多的消费者,并且总有一个消费者准备好获取交付的工作时,才适合使用同步队列。

6、双端队列Deque适用于“工作密取”模式,在这种模式中,每个消费者都有自己的双端队列,如果自己的Deque为空时,那么它可以从其他消费者的Deque的末尾秘密低获取工作,从末尾获取任务而不是头部,主要是为了降低队列上的竞争程度,从而确保每个消费者都保持忙碌状态。在大多数时候,消费者(线程)只是访问自己的双端队列,从而极大的减少竞争。

以上是关于java并发编程实战读书笔记4--生产者消费者模式和队列的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程实战之基于生产者消费者模式的日志服务读书笔记

Java并发编程实战之基于生产者消费者模式的日志服务读书笔记

《Java并发编程实战》第六章 任务运行 读书笔记

《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式

java并发基础

Day855.生产者-消费者模式 -Java 并发编程实战