码迷,mamicode.com
首页 > 其他好文 > 详细

blockingQueue的并发问题

时间:2018-05-08 14:24:37      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:locking   队列   block   for循环   个数   先后   一个   互斥   并发   

用的是两个lock,putlock和takelock

这样一来其实就相当于两个线程

但是两个线程操作指针也会有并发问题

如果队列元素个数大于1,是不会有问题的,因为put是在队列尾,take是在队列头部

如果队列元素个数为0或者1,会有可能

在设计上是,先放,再cas加一,取的线程在for循环获取,先看cas取是不是大于0,这样就有了一个先后顺序:必须是放完了,才能取,不会是一边放一边取,所以这里存和取还是互斥的。

blockingQueue的并发问题

标签:locking   队列   block   for循环   个数   先后   一个   互斥   并发   

原文地址:https://www.cnblogs.com/chuliang/p/9007408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!