blockingQueue的并发问题
Posted chuliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了blockingQueue的并发问题相关的知识,希望对你有一定的参考价值。
用的是两个lock,putlock和takelock
这样一来其实就相当于两个线程
但是两个线程操作指针也会有并发问题
如果队列元素个数大于1,是不会有问题的,因为put是在队列尾,take是在队列头部
如果队列元素个数为0或者1,会有可能
在设计上是,先放,再cas加一,取的线程在for循环获取,先看cas取是不是大于0,这样就有了一个先后顺序:必须是放完了,才能取,不会是一边放一边取,所以这里存和取还是互斥的。
以上是关于blockingQueue的并发问题的主要内容,如果未能解决你的问题,请参考以下文章
Java并发多线程编程——阻塞队列(BlockingQueue)