您当前的位置: 首页 >  Java

郭梧悠

暂无认证

  • 1浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

郭梧悠 发布时间:2021-10-19 21:13:47 ,浏览量:1

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

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

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

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

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

关注
打赏
1663674776
查看更多评论
立即登录/注册

微信扫码登录

0.0366s