android/java—寻找高效的并发循环队列
有人知道有界连续循环队列的(开源)实现,或者android/java中内置的可用API类吗 此集合所需的并发(非同步或基于锁的)操作至少是enqueue和dequeue,但enqueue也足够了 对于那些不确定我需要的收藏的人,这里有一些更多信息:android/java—寻找高效的并发循环队列,java,android,queue,cyclic,Java,Android,Queue,Cyclic,有人知道有界连续循环队列的(开源)实现,或者android/java中内置的可用API类吗 此集合所需的并发(非同步或基于锁的)操作至少是enqueue和dequeue,但enqueue也足够了 对于那些不确定我需要的收藏的人,这里有一些更多信息: 有界-最多可包含的项目数 并发-允许多个线程高效地运行操作,而无需任何类型的锁定。这与同步解决方案相反,同步解决方案只允许单个线程运行操作 循环-如果我们将项目放入已填充的集合中,新项目将替换最旧的项目 请帮助您描述的内容听起来很像,但它是一个外
- 有界-最多可包含的项目数李>
- 并发-允许多个线程高效地运行操作,而无需任何类型的锁定。这与同步解决方案相反,同步解决方案只允许单个线程运行操作
- 循环-如果我们将项目放入已填充的集合中,新项目将替换最旧的项目
请帮助您描述的内容听起来很像,但它是一个外部库,不是内置的。据我所知,Java标准库中没有内置的环形缓冲区数据结构。听起来您应该复制
ArrayBlockingQueue.Java
(可在框架源代码中找到),然后更改\offer(T)
和\put(T)
方法将最后一个项目以及排除最后一个项目的presto即时有界队列排出队列。@Jens-ArrayBlockingQueue不允许多个线程同时访问,从源判断。正确。不仅如此,而且它也不是循环的:如果您试图将一个项目放入一个已填充的队列,它会一直等待它,直到它没有被填满,反之-如果你试图从一个空队列中获取一个项目,它会一直等待它,直到它不是空的。ArrayBlockingQueue\offer(T)
是非阻塞的,就像\poll()
-阻塞版本分别是\put(T)
和\take()
,所以是的,当您需要同时进行非阻塞投票和报价时,可以使用它们@androiddeveloper:是的,这就是为什么当队列已满时,您必须复制和修改源以退出队列。“并发-允许多个线程在没有任何锁定的情况下高效运行操作”-根据定义,这是不可能的。正确。看起来很像。你认为这正是我需要的吗?他们有使用的示例代码吗?如果是这样,我会给你一个V.:)[PDF]第4.7点中有一个代码示例,以及。disruptor是否正是您所需要的,只有您可以判断:)示例代码与队列的实际情况并不相似。另外,我不确定BatchHandler、batchConsumer、ConsumerBarrier和ProducerBarrier的用途是什么。请展示一些实现使用此库的排队和退队方法的代码?