【发布时间】:2016-07-13 00:04:26
【问题描述】:
我正在使用 Java。我需要将数据发布到 FIFO 队列。该队列将由单独的线程处理。这样我就避免了阻塞主线程。 我关于发布数据的用例是:-
- 每个数据对象都有一个唯一标识它的字段。所以有 50 多个这样的“键”。还有其他字段是对象的其余数据。
- 如果出现新数据对象,则不应盲目地将其插入队列,而应替换旧数据对象。仅如果它们的数据基于字段比较等不同。否则它将被简单地丢弃。请记住,其中一个字段是关键。其余的是数据,可能会有很大差异。
- 这些数据必须在 FIFO 基础上进行处理。因此我需要一种队列。
- 不用说,它也应该是线程安全的。
有人知道满足这些标准的任何数据结构吗?谢谢。
【问题讨论】:
-
如果更新应该替换现有条目,新条目是进入队列中旧条目的位置,还是旧条目从队列中删除,新条目添加到最后?
-
还有,你期望什么样的并发性能?
-
因为您的队列中最多有 50 个元素,您很可能会在一些同步块中使用简单的列表包装器。除非您需要极高的并发性。
-
替换现有的更好。并发性.. 必须确保最新数据必须立即可供发布.. 具有财务影响。但我同意尺寸很小。
标签: java multithreading data-structures