是否使用java中的信号量实现了BlockingQueues,特别是ArrayBlockingQueues?他们内部使用相同的概念吗?
答案 0 :(得分:0)
不同的JDK可能有不同的实现。 OpenJDK不使用信号量来实现ArrayBlockingQueue。但是,您应该专门检查您感兴趣的实现,因为可以使用信号量开发ArrayBlockingQueue。
有关ArrayBlockingQueue的不同实现,请参阅以下链接。 Grepcode:ArrayBlockingQueue
OpenJDK vesion 8u40-b25使用Locks(实际上是ReentrantLocks),这是一个不同的概念。您可以在此链接中查看来源 ArrayBlockingQueue - OpenJDK
请参阅有关Locks VS Semaphores的这篇文章: Binary Semaphore vs a ReentrantLock