java - 什么集合支持多个同时插入?

标签 java performance multithreading data-structures

我们正在开发一个具有多个工作线程的 Java 应用程序。这些线程必须向我们的 UI 线程传递大量计算结果。结果的交付顺序无关紧要。

现在,所有线程都只是将它们的结果推送到一个同步堆栈中 - 但这意味着每个线程都必须等待其他线程才能交付结果。

是否有一种数据结构支持同时插入且每次插入都在恒定时间内完成?

谢谢,

马丁

最佳答案

ConcurrentLinkedQueue专为高争用而设计。生产者在一端排队,消费者在另一端收集元素,因此一切都将按照添加的顺序进行处理。

ArrayBlockingQueue对于较低的争用和较低的空间开销来说更好。

编辑:虽然这不是您所要求的。同时插入?您可能希望为每个线程提供一个输出队列(例如,一个 ArrayBlockingQueue),然后让 UI 线程轮询单独的队列。但是,我认为您会发现上述两个 Queue 实现之一就足够了。

关于java - 什么集合支持多个同时插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093058/

相关文章:

java - 使用不包含类文件的java库

C# 性能异常案例

java - 程序超过理论内存传输率

javascript - setInterval 不同间隔之间的性能影响

java - 强制 Java 刷新 Java Swing GUI

java - 如何将数据传递到字符串中,该字符串将在另一个类中访问?

java - ClassCastException,为什么我的保存按钮在单击时没有将选中的复选框保存到我的数据库中?

java - @PersistenceContext 如何保证线程安全?

multithreading - 如何解除 panic 中的所有线程?

java - 在 Morphia 中没有相应定义的 MongoDB 字段会怎样?