Метод предложения BlockingQueue иногда не добавляет элемент в список - PullRequest
0 голосов
/ 21 мая 2018

Я использую BlockingQueue в многопоточной системе, где синхронизированный блок добавляет элементы в список.Иногда он не добавляет элементы в список, элементы, которые он пропускает, являются случайными. Я пытался добавить следующую строку в код, а затем никогда не пропускал ни одного элемента.

list.forEach(item -> logger.info(" In list "+item));

Я чувствую, что такое поведениестранный.Может кто-нибудь, пожалуйста, помогите мне понять, как я могу решить эту проблему отсутствующего файла?Я не хочу излишне перебирать весь список.Я что-то упускаю в этом?

1 Ответ

0 голосов
/ 21 мая 2018

В документации для предложения говорится, что иногда это может не сработать.

Вставляет указанный элемент в эту очередь , если это возможно сделать немедленно , не нарушая ограничения емкости, возвращая true при успехе и false, если в настоящее время нет свободного места.

Если вы можете блокировать при попытке добавить, используйте put

Вставляет указанный элемент в эту очередь, , если ожидаетнеобходимо , чтобы освободить место.

...