Вставка LinkedBlockingQueue является и удаляет ориентированные на многопотоковое исполнение методы?

Я использую LinkedBlockingQueue между двумя различными потоками. Один поток добавляет данные через add, в то время как другой поток получает данные через take.

Мой вопрос, сделайте я должен синхронизировать доступ к add и take. LinkedBlockingQueueвставить и удалить ориентированные на многопотоковое исполнение методы?

52
задан Steve Kuo 22 April 2010 в 13:23
поделиться

1 ответ

Да. Из документы :

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

55
ответ дан 7 November 2019 в 09:31
поделиться