具有一个元素的LinkedBlockingQueue-读取器/写入器争用条件

时间:2019-05-04 17:47:01

标签: java multithreading blockingqueue

LinkedBlockingQueue使用两个单独的ReentrantLocks, putLock takeLock 。这样一来,一个读者和一个作家就可以使用以下方法同时访问队列:

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

让我们说一个linkedBlockingQueue只有一个元素。 poll()/ take()使用takeLock,put()/ offer()使用putLock。 我看到当poll()尝试删除唯一的元素而put()尝试添加另一个元素时会出现竞争,因为一个读取器和一个写入器线程将同时访问节点数据结构

那么,这是否意味着LinkedBlockingQueue不是完全线程安全的?

0 个答案:

没有答案