Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android/java—寻找高效的并发循环队列_Java_Android_Queue_Cyclic - Fatal编程技术网

android/java—寻找高效的并发循环队列

android/java—寻找高效的并发循环队列,java,android,queue,cyclic,Java,Android,Queue,Cyclic,有人知道有界连续循环队列的(开源)实现,或者android/java中内置的可用API类吗 此集合所需的并发(非同步或基于锁的)操作至少是enqueue和dequeue,但enqueue也足够了 对于那些不确定我需要的收藏的人,这里有一些更多信息: 有界-最多可包含的项目数 并发-允许多个线程高效地运行操作,而无需任何类型的锁定。这与同步解决方案相反,同步解决方案只允许单个线程运行操作 循环-如果我们将项目放入已填充的集合中,新项目将替换最旧的项目 请帮助您描述的内容听起来很像,但它是一个外

有人知道有界连续循环队列的(开源)实现,或者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的用途是什么。请展示一些实现使用此库的排队和退队方法的代码?