blockingQueue的并发问题

Posted chuliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了blockingQueue的并发问题相关的知识,希望对你有一定的参考价值。

用的是两个lock,putlock和takelock

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

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

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

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

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

以上是关于blockingQueue的并发问题的主要内容,如果未能解决你的问题,请参考以下文章

并发阻塞队列BlockingQueue解读

Java并发-BlockingQueue

blockingQueue的并发问题

Java并发多线程编程——阻塞队列(BlockingQueue)

并发编程—— Java 并发队列 BlockingQueue 实现之 SynchronousQueue源码分析

Java并发编程--BlockingQueue