A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小白进阶之路 高级黑马   /  2019-5-28 22:47  /  729 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ArrayBlockingQueue 通过使用全局独占锁实现同时只能有一个线程进行入队或者出队操作,这个锁的粒度比较大,有点类似在方法上添加 synchronized 的意味。其中 offer,poll 操作通过简单的加锁进行入队出队操作,而 put,take则使用了条件变量实现如果队列满则等待,如果队列空则等待,然后分别在出队和入队操作中发送信号激活等待线程实现同步。另外相比 LinkedBlockingQueueArrayBlockingQueue 的 size 操作的结果是精确的,因为计算前加了全局锁。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马