现在,我有一个队列,有多个生产者和一个消费者。
消费者线程操作很慢。另外,消费者通过 peek 操作从队列中取出元素,直到消费操作完成,才能将元素从队列中移除。这是因为作为辅助操作的生产者线程还拍摄了当时未完全处理的所有元素的快照。
现在,我想更改我的代码以支持多个消费者。所以,假设我有三个线程,一个线程将获取第一个元素,可以通过 peek 操作读取。第二个消费者线程可以获取第二个元素,但我无法检索它,因为队列不支持检索第二个元素。
因此,使用标准 ConcurrentLinkedQueue (我现在正在使用)的选项已经取消。
我正在考虑使用优先级队列,但是我必须将每个元素与一个标志相关联,该标志告诉我该元素是否已被某个线程使用。
哪种数据结构最适合这个问题?