如何使用原始类型实现阻塞队列?

How can I implement a blocking queue with primive types?

是否有 Java 本机实现使用原始类型的阻塞队列?如果没有,我该如何建造一个?

我想在使用基元类型时使用不装箱和拆箱的阻塞队列。我查看了宝藏资源,但它不支持阻塞队列。

据我所知,基本类型没有内置的阻塞队列。

这给您留下了两个选择:

  1. 避免原始类型。使用 Java 的包装器,例如 Integer, Float 等。这是我推荐的,除非你有 非常好的 避免引用的理由(你害怕吗?额外的内存?你打算在队列中保留多少项目?)

  2. 自己实现一个阻塞队列。使用简单的数组和 Semaphore. Although you can probably get better performance if you copy the OpenJDK's 实现并进行所需的更改应该相当简单。只需将 private final E[] items 更改为 private final int[] items 之类的内容,然后在引用 items 的地方进行可能需要的任何其他更改。