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

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

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

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

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

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

  1. Java并发编程实战读书笔记

    Java并发编程 标签(空格分隔): 并发 多线程 基础 线程 在执行过程中,能够执行程序代码的一个执行单元,在Java语言中,线程有四种状态:运行,就绪,挂起,结束. 并发特性 原子性 一个操作不会 ...

  2. Java并发编程实战读书笔记三

    第七章 取消和关闭 Java没有提供任何机制来安全的终止线程,虽然 Thread.stop 和 suspend 等方法提供了这样的机制,但由于存在着一些严重的陷,因此应该避免使用 7.1任务取消 7. ...

  3. Java并发编程实战读书笔记(一)——线程安全性、对象共享

    一.线程安全性 一个对象是否需要是线程安全的,取决于它是否被多个线程访问. 当多个线程访问,并且其中有一个执行写入时,必须采用同步机制,Java中主要的同步关键字是 synchronized 独占加锁 ...

  4. Java并发编程实战读书笔记二

    第五章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 如下,如果list含有10个元素,线程A调用getLast的同时线程B调用deleteLast,那么getLast可能会报Arr ...

  5. Java并发编程实战读书笔记一

    第1章 简介 第2章 线程安全性 1个状态变量线程安全的模式 多个状态变量线程不安全的模式,在A线程lastNumbers.set和lastFactors.set之间B线程进行这两个set就出问题了, ...

  6. java并发编程实践 读书笔记_Java - 并发编程实践(读书笔记)

    [注] 同步机制保证:1)原子性 2)内存可见性: Volatile变量只能保证:1)可见性: - 恰当的同步,同步的弱形式,确保对一个变量的更新以可预见的方式告知其他线程. [注] 用锁来协调访问变 ...

  7. Java 并发编程艺术 读书笔记

    第 1 章 并发编程的挑战 1.1.3 如何减少上下文切换 减少上下文切换的方法有无锁并发编程.CAS 算法.使用最少线程和使用协程. 无锁并发编程.多线程竞争锁时,会引起上下文切换,所以多线程处理数 ...

  8. Java并发编程艺术----读书笔记(二)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/64214595  java并发编程艺术2 jav ...

  9. JAVA并发编程艺术读书笔记(1,2章节)

    第一章 并发编程的挑战 为什么要使用并发编程? 主要是为了更有效地利用资源.即使是单核的CPU也可以多线程执行程序,多线程实际上是CPU分配时间片给各个线程,因为时间片非常短,所以看起来就像在同事执行 ...

  10. Java并发编程艺术读书笔记

    1.多线程在CPU切换过程中,由于需要保存线程之前状态和加载新线程状态,成为上下文切换,上下文切换会造成消耗系统内存.所以,可合理控制线程数量. 如何控制: (1)使用ps -ef|grep appn ...

最新文章

  1. 计算机组成原理文华学院,华中科技大学文华学院计算机组成原理课设.doc
  2. 如何用计算机画立方体,画立方体-计算机图形学实验.doc
  3. 【Python学习系列九】Python机器学习库scikit-learn实现SVM案例
  4. java与c/c++进行socket通信的一些问题(2)
  5. 量角器中Selenium定位器的完整指南(示例)
  6. Studio 一些使用
  7. mpvue 微信小程序 Image 图片实现宽度100%,高度自适应
  8. 分布式系统与消息投递
  9. 使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
  10. [计算机网络] - HTTP、HTTPS
  11. 微信亿级用户异常检测框架的设计与实践
  12. MVC系统的Filter
  13. zynq processing system 参数设置_【正点原子FPGA连载】第六章自定义IP核-呼吸灯实验-领航者 ZYNQ 之嵌入式开发指南...
  14. 制造车间怎么推行5S管理?
  15. 笔记本加装固态和内存条教程(超详细)
  16. idea 集成Git 遇到的问题 与解决
  17. MAC OS的HOME和END
  18. 我想我是海 梦坠西子湖
  19. MATLAB图像拼接——怎么用MATLAB做拼图?
  20. 记录一次微信小程序总是闪退的问题

热门文章

  1. HighCharts:PlotLine的label文字不显示
  2. Git:操作报错:fatal: ‘origin‘ does not appear to be a git repository解决方案
  3. 分布式系统基本原理介绍
  4. 认真,respect!
  5. python pandas库-dataframe.pivot()方法的理解
  6. karto探秘之open_karto 第二章 --- 参数解析
  7. KMP模式匹配的next数组
  8. OPENCV中操作鼠标
  9. 推荐一个超干货的计算机视觉社区!
  10. 科沃斯的技术跃进:交互与场景才是未来