美文网首页
同步----阻塞队列

同步----阻塞队列

作者: 爱做梦的严重精神病患者 | 来源:发表于2019-03-17 22:07 被阅读0次

  详见BlockinQueue

  对于许多线程问题,可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插入元素,消费者线程则取出它们。使用队列,可以安全地从一个线程向另一个线程传递数据。
  例如,考虑银行转账程序,转账线程将转账指令对象插入一个队列中,而不是直接访问银行对象。另一个线程从队列中取出指令执行转账。只有该线程可以访问该银行对象的内部,因此不需要同步。

  在协调多个线程之间的合作时,阻塞队列(BlockingQueue)是一个有用的工具。以生产者和消费者模型为例生产者线程可以周期性地将中间结果存储在阻塞队列中。消费者线程移出中间结果并进一步加以操作
  队列自动地平衡负载,如果生产者产出数据的速度大于消费者消费的速度,并且当生产出来的数据累积到一定程度的时候,那么生产者必须暂停等待一下(阻塞生产者线程),以便等待消费者线程把累积的数据处理完毕,反之亦然。

  在concurrent包发布以前,在多线程环境下,每个程序员都必须去自己控制这些细节,尤其还要兼顾效率和线程安全,而这会给程序带来不小的复杂度。

相关文章

  • Swift GCD 的串行队列与并行队列

    队列异步是否阻塞当前线程同步是否阻塞当前线程执行顺序串行队列否是按添加顺序并行队列否是同时执行,但会被同步阻塞 串...

  • 同步----阻塞队列

      详见BlockinQueue   对于许多线程问题,可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生...

  • GCD 同步函数 异步函数 串行队列 并发队列 8种情况分析

    1.主队列 1.1同步函数 + 主队列 同步函数 任务放入主队列 会阻塞主队列 1.2异步函数 + 主队列 异步函...

  • 2021--- GCD

    gcd同步,异步,串行队列,并发队列,全局队列,主队列,以及死锁。 1、gcd队列阻塞问题[https://www...

  • 8,setTimeout、Promise、Async/Await

    KeyWords:宏(微)任务队列、阻塞非阻塞(强调线程状态)、同步异步强调一种“机制”任务是连续的(同步)、不连...

  • Java中的阻塞队列(2)

    6、同步队列SynchronousQueue 同步队列是一个不存储元素的阻塞队列,每一个put操作必须等待一个...

  • 同步、异步与串行、并发

    1、同步、异步描述的是当前线程或代码流是否要阻塞以等待加入队列的任务执行完毕;同步要阻塞当前线程,异步不会阻塞当前...

  • golang 信道总结

    信道channel 概念 一个可以阻塞程序运行的队列,使用于并发状态下的消息传递 信道阻塞总结 同步信道(队列大小...

  • GCD异步并发队列内加入同步任务的执行顺序

    原因猜想: -- 异步并发队列 中加入同步任务-- 同步任务会占用并阻塞当前线程(打印AAAA)-- 当同步任务执...

  • 同步工具类

    常见同步工具类 闭锁 FutureTask 信号量 栅栏 阻塞队列 构建自己的同步工具类 介绍 同步工具类可以是任...

网友评论

      本文标题:同步----阻塞队列

      本文链接:https://www.haomeiwen.com/subject/jbuemqtx.html