Разница между SynchronousQueue и TransferQueue
в чем разница между этими реализациями и в каких случаях следует использовать ту или иную очередь?
1 ответов
Как говорится в этот пост Алекса Миллера
TransferQueue более общий и полезный чем SynchronousQueue однако по мере того как оно позволяет вам гибко решить ли использовать нормальный Семантика BlockingQueue или гарантированная передача. В случае, если элементы уже находятся в очереди, вызов transfer гарантирует, что все существующие элементы очереди будут обработаны до передачи пункт.
SynchronousQueue реализация использует двойные очереди (для ожидающих производителей и ожидающих потребителей) и защищает обе очереди с один замок. Реализация LinkedTransferQueue использует CAS операции для формирования неблокирующей реализации, и это на сердце избежания узких мест сериализации.