LinkedBlockingQueue с одним элементом - Состояние гонки Reader / Writer - PullRequest
1 голос
/ 04 мая 2019

LinkedBlockingQueue использует две отдельные ReentrantLocks, putLock и takeLock .Это позволяет одному читателю и одному писателю одновременно получать доступ к очереди, используя следующие методы:

1) poll()
2) take()
3) put()
4) offer()

Допустим, что relatedBlockingQueue имеет только один элемент.poll () / take () использует takeLock, а put () / offer () использует putLock.Я вижу состояние гонки, когда poll () пытается удалить единственный элемент, а put () пытается добавить другой элемент, потому что один читатель и один поток записи будут одновременно получать доступ к структуре данных узла.

Значит ли это, что LinkedBlockingQueue не является полностью поточно-ориентированным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...