来自JavaDocs:
我有两个场景,一个需要队列支持许多生产者(使用它的线程)与一个消费者,另一个是另一种方式.
我不明白使用哪种实现.有人可以解释一下这些差异是什么吗?
此外,什么是"可选的公平政策" ArrayBlockingQueue?
我需要一个固定大小的队列.当我添加一个元素并且队列已满时,它应该自动删除最旧的元素.
Java中是否存在此实现?
我正在使用ConcurrentQueue共享数据结构,其目的是保存传递给它的最后N个对象(历史记录类型).
假设我们有一个浏览器,我们希望最后100个浏览Urls.我想要一个队列,当容量变满时(历史中的100个地址),当新条目插入(入队)时自动删除(出列)最旧的(第一个)条目.
我怎样才能实现这个目标System.Collections?
我想在Objective-C程序中使用队列数据结构.在C++中,我使用STL队列.Objective-C中的等效数据结构是什么?如何推送/弹出项目?
我的问题涉及前面提到的这个问题.在我使用队列进行生产者和消费者线程之间的通信的情况下,人们通常会建议使用LinkedBlockingQueue或ConcurrentLinkedQueue?
使用一个优于另一个的优点/缺点是什么?
从API的角度来看,我可以看到的主要区别是a LinkedBlockingQueue可以选择性地限制.
以http://java.sun.com/j2se/1.5.0/docs/api/java/util/PriorityQueue.html#offer(E)PriorityQueue为例
任何人都可以给我一个例子,Queue其中add和offer方法不同?
根据该Collection文档,该add方法通常会寻求确保元素存在于Collection而不是添加重复项中.所以我的问题是,add和offer方法有什么区别?
这个offer方法是否会添加重复项?(我怀疑这是因为如果一个Collection应该只有不同的元素,这将绕过那个).
编辑:在PriorityQueue中add和offer方法是相同的方法(见我的回答如下).任何人都可以给我一个类add和offer例子不同的例子吗?
NSOperationQueue有waitUntilAllOperationsAreFinished,但我不想同步等待它.我只想在队列完成时隐藏UI中的进度指示器.
实现这一目标的最佳方法是什么?
我不能发送来自我NSOperation的通知,因为我不知道哪一个会是最后一个,并且[queue operations]在收到通知时可能不会是空的(或者更糟糕的是 - 重新填充).
我有一些与RabbitMQ一起运行的队列.其中一些现在没用,我怎么能删除它们?不幸的是我没有设置auto_delete选项.
如果我现在设置它,它会被删除吗?
有没有办法现在删除这些队列?
该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
queue ×10
java ×4
concurrency ×2
rabbitmq ×2
add ×1
amqp ×1
asynchronous ×1
c# ×1
cocoa ×1
fifo ×1
iphone ×1
nsoperation ×1
objective-c ×1
python ×1