Разница между SynchronousQueue и TransferQueue

в чем разница между этими реализациями и в каких случаях следует использовать ту или иную очередь?

1 ответов


Как говорится в этот пост Алекса Миллера

TransferQueue более общий и полезный чем SynchronousQueue однако по мере того как оно позволяет вам гибко решить ли использовать нормальный Семантика BlockingQueue или гарантированная передача. В случае, если элементы уже находятся в очереди, вызов transfer гарантирует, что все существующие элементы очереди будут обработаны до передачи пункт.

SynchronousQueue реализация использует двойные очереди (для ожидающих производителей и ожидающих потребителей) и защищает обе очереди с один замок. Реализация LinkedTransferQueue использует CAS операции для формирования неблокирующей реализации, и это на сердце избежания узких мест сериализации.