java中的ArrayBlockingQueue是使用信号量实现的吗?

时间:2018-02-09 12:54:39

标签: java multithreading semaphore blockingqueue

是否使用java中的信号量实现了BlockingQueues,特别是ArrayBlockingQueues?他们内部使用相同的概念吗?

1 个答案:

答案 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