В данный момент у меня есть очередь с несколькими производителями и одним потребителем.
Работа с потоками потребителей идет медленно.Кроме того, потребитель берет элемент из очереди посредством операции просмотра, и пока операция потребления не будет завершена, элемент не может быть удален из очереди.Это связано с тем, что поток производителя в качестве побочной операции также делает снимок всех элементов, которые не были полностью обработаны в тот момент времени.
Теперь я хочу изменить свой код для поддержки нескольких потребителей.Итак, допустим, у меня есть три потока, один поток возьмет первый элемент, который может быть прочитан через операцию просмотра.Второй потребительский поток может перейти ко второму элементу, но у меня нет способа извлечь его, поскольку очередь не поддерживает извлечение второго элемента.
Итак, опция использования стандартного ConcurrentLinkedQueue (который я используюпрямо сейчас) нет.
Я подумываю об использовании очереди приоритетов, но тогда мне придется ассоциировать с каждым элементом флаг, который сообщает мне, используется ли этот элемент каким-либо потоком или нет.
Какая структура данных больше всего подходит для этой проблемы?