Я использую LinkedBlockingQueue
между двумя различными потоками. Один поток добавляет данные через add
, в то время как другой поток получает данные через take
.
Мой вопрос, сделайте я должен синхронизировать доступ к add
и take
. LinkedBlockingQueue
вставить и удалить ориентированные на многопотоковое исполнение методы?
Да. Из документы :
«Реализации BlockingQueue потокобезопасны. Все методы организации очередей достигают своего эффекта атомарно, используя внутренние блокировки или другие формы контроль параллелизма. Однако операции массового сбора addAll, containsAll, keepAll и removeAll не обязательно выполняются атомарно, если не указано иное { {1}} в реализации. Таким образом, возможно, например, для addAll (c) сбой (выдача исключения) после добавления только некоторых элементов в ок. "