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