标签: queue

我应该在Java中使用哪个并发队列实现?

来自JavaDocs:

  • 的ConcurrentLinkedQueue是当许多线程共享访问一个共同的集合一个合适的选择.此队列不允许null元素.
  • ArrayBlockingQueue是一个经典的"有界缓冲区",其中固定大小的数组包含由生产者插入并由消费者提取的元素.此类支持用于排序等待生产者和消费者线程的可选公平策略
  • LinkedBlockingQueue通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中具有较低的可预测性能.

我有两个场景,一个需要队列支持许多生产者(使用它的线程)与一个消费者,另一个是另一种方式.

我不明白使用哪种实现.有人可以解释一下这些差异是什么吗?

此外,什么是"可选的公平政策" ArrayBlockingQueue

java queue concurrency multithreading

123
推荐指数
3
解决办法
10万
查看次数

是否有固定大小的队列来删除多余的元素?

我需要一个固定大小的队列.当我添加一个元素并且队列已满时,它应该自动删除最旧的元素.

Java中是否存在此实现?

java queue

117
推荐指数
6
解决办法
6万
查看次数

固定大小队列,在新的enques上自动将旧值出列

我正在使用ConcurrentQueue共享数据结构,其目的是保存传递给它的最后N个对象(历史记录类型).

假设我们有一个浏览器,我们希望最后100个浏览Urls.我想要一个队列,当容量变满时(历史中的100个地址),当新条目插入(入队)时自动删除(出列)最旧的(第一个)条目.

我怎样才能实现这个目标System.Collections

c# queue fifo

111
推荐指数
7
解决办法
7万
查看次数

如何在Objective-C中创建和使用队列?

我想在Objective-C程序中使用队列数据结构.在C++中,我使用STL队列.Objective-C中的等效数据结构是什么?如何推送/弹出项目?

queue cocoa objective-c data-structures

107
推荐指数
6
解决办法
7万
查看次数

LinkedBlockingQueue vs ConcurrentLinkedQueue

我的问题涉及前面提到的这个问题.在我使用队列进行生产者和消费者线程之间的通信的情况下,人们通常会建议使用LinkedBlockingQueueConcurrentLinkedQueue

使用一个优于另一个的优点/缺点是什么?

从API的角度来看,我可以看到的主要区别是a LinkedBlockingQueue可以选择性地限制.

java queue concurrency multithreading data-structures

104
推荐指数
3
解决办法
5万
查看次数

Java中Queue中的add和offer方法有什么区别?

http://java.sun.com/j2se/1.5.0/docs/api/java/util/PriorityQueue.html#offer(E)PriorityQueue为例

任何人都可以给我一个例子,Queue其中addoffer方法不同?

根据该Collection文档,该add方法通常会寻求确保元素存在于Collection而不是添加重复项中.所以我的问题是,addoffer方法有什么区别?

这个offer方法是否会添加重复项?(我怀疑这是因为如果一个Collection应该只有不同的元素,这将绕过那个).

编辑:在PriorityQueueaddoffer方法是相同的方法(见我的回答如下).任何人都可以给我一个类addoffer例子不同的例子吗?

java queue add

101
推荐指数
7
解决办法
8万
查看次数

RabbitMQ消息的大小和类型

  1. RabbitMQ队列中可以存储哪些消息?只有字符串?或者我可以选择我想要存储的类型:int,binary,string等?
  2. 一条消息的最大大小是多少?
  3. 可以创建多少个队列或交换?或者它取决于服务器的功率?

queue message-queue amqp rabbitmq

92
推荐指数
3
解决办法
6万
查看次数

当NSOperationQueue完成所有任务时获取通知

NSOperationQueuewaitUntilAllOperationsAreFinished,但我不想同步等待它.我只想在队列完成时隐藏UI中的进度指示器.

实现这一目标的最佳方法是什么?

我不能发送来自我NSOperation的通知,因为我不知道哪一个会是最后一个,并且[queue operations]在收到通知时可能不会是空的(或者更糟糕的是 - 重新填充).

iphone queue notifications asynchronous nsoperation

89
推荐指数
6
解决办法
5万
查看次数

删除RabbitMQ中的队列

我有一些与RabbitMQ一起运行的队列.其中一些现在没用,我怎么能删除它们?不幸的是我没有设置auto_delete选项.

如果我现在设置它,它会被删除吗?

有没有办法现在删除这些队列?

queue rabbitmq

85
推荐指数
14
解决办法
9万
查看次数

在多个进程之间共享结果队列

multiprocessing模块的文档显示了如何将队列传递给以multiprocessing.Process.开头的进程.但是,如何与异步工作进程共享队列apply_async?我不需要动态加入或其他任何东西,只是工人(反复)将结果报告回基地的一种方式.

import multiprocessing
def worker(name, que):
    que.put("%d is done" % name)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    q = multiprocessing.Queue()
    workers = pool.apply_async(worker, (33, q))
Run Code Online (Sandbox Code Playgroud)

这失败了: RuntimeError: Queue objects should only be shared between processes through inheritance.我理解这意味着什么,我理解继承的建议,而不是要求pickle/unpickling(以及所有特殊的Windows限制).但如何我传递队列中一个可行的办法?我找不到一个例子,我尝试了几种以各种方式失败的替代品.请帮忙?

python queue parallel-processing multiprocessing python-multiprocessing

77
推荐指数
2
解决办法
4万
查看次数