如何实现具有原始类型的阻塞队列?

时间:2016-09-06 09:44:35

标签: java collections blockingqueue

是否存在使用具有基本类型的阻塞队列的Java本机实现?如果没有,我该如何建立一个?

我想在使用基元类型时使用阻塞队列而不进行装箱和拆箱。我检查了托架资产,但它不支持阻塞队列。

1 个答案:

答案 0 :(得分:2)

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

这为您提供了两个选项:

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

  2. 自己实施阻止队列。使用简单的数组和Semaphore应该相当简单。如果您复制OpenJDK's实施并进行必要的更改,则可能会获得更好的性能。只需将private final E[] items更改为private final int[] items之类的内容,然后在引用items的情况下进行任何其他更改。