【问题标题】:Is ArrayBlockingQueue in java implemented using semaphores?java中的ArrayBlockingQueue是用信号量实现的吗?
【发布时间】:2018-02-09 12:54:39
【问题描述】:

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

【问题讨论】:

  • JDK 自带源码。你检查过吗?
  • 请说明您的努力。你搜索了什么,你发现了什么以及需要回答的问题是什么。同一个概念是什么意思?信号量的概念?

标签: java multithreading semaphore blockingqueue


【解决方案1】:

不同的 JDK 可能有不同的实现。 OpenJDK 不使用信号量来实现 ArrayBlockingQueue。但是,您应该特别检查您感兴趣的实现,因为可以使用信号量开发 ArrayBlockingQueue。

请参阅以下链接了解 ArrayBlockingQueue 的不同实现。 Grepcode:ArrayBlockingQueue

OpenJDK 版本 8u40-b25 使用锁(实际上是可重入锁),这是一个不同的概念。您可以在此链接中查看来源。
ArrayBlockingQueue - OpenJDK

请参阅这篇关于锁与信号量的文章: Binary Semaphore vs a ReentrantLock

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多