我们正在开发一个具有多个工作线程的 Java 应用程序。这些线程必须向我们的 UI 线程传递大量计算结果。结果的交付顺序无关紧要。
现在,所有线程都只是将它们的结果推送到一个同步堆栈中 - 但这意味着每个线程都必须等待其他线程才能交付结果。
是否有一种数据结构支持同时插入且每次插入都在恒定时间内完成?
谢谢,
马丁
最佳答案
ConcurrentLinkedQueue专为高争用而设计。生产者在一端排队,消费者在另一端收集元素,因此一切都将按照添加的顺序进行处理。
ArrayBlockingQueue对于较低的争用和较低的空间开销来说更好。
编辑:虽然这不是您所要求的。同时插入?您可能希望为每个线程提供一个输出队列(例如,一个 ArrayBlockingQueue
),然后让 UI 线程轮询单独的队列。但是,我认为您会发现上述两个 Queue
实现之一就足够了。
关于java - 什么集合支持多个同时插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093058/