【发布时间】:2011-04-28 09:05:27
【问题描述】:
现在,我有一个队列,有多个生产者和单个消费者。
消费者线程操作很慢。另外,消费者通过 peek 操作从队列中取出元素,直到消费操作完成,才能将元素从队列中移除。这是因为生产者线程作为一个边操作也会对在那个时间点未完全处理的所有元素进行快照。
现在,我想更改我的代码以支持多个消费者。所以,假设我有三个线程,一个线程将获取第一个元素,可以通过 peek 操作读取。 第二个消费者线程可以获取第二个元素,但我无法检索它,因为队列不支持检索第二个元素。
所以,使用标准 ConcurrentLinkedQueue(我现在正在使用)的选项已经取消。
我正在考虑使用优先级队列,但是我必须为每个元素关联一个标志,告诉我该元素是否已被某个线程使用。
哪种数据结构最适合这个问题?
【问题讨论】:
标签: java data-structures producer-consumer