如何使用Java和Spring知道BlockingQueue中当前有多少元素

时间:2016-02-08 13:27:59

标签: java spring spring-bean

我有一个Java应用程序,我正在使用Spring Framework。

使用bean我定义了一个队列,其大小设置为最多5个元素,如下所示:

  <bean id="Queue1" class="java.util.concurrent.PriorityBlockingQueue">
      <constructor-arg type="int"><value>5</value></constructor-arg>
  </bean>

然后我使用注入将它传递给Java中的构造函数,并在构造函数中初始化它。在Java中,我已经定义并完成了以下内容:

private final BlockingQueue<OrdenTrabajo> queue;
...
this.queue = queue
...

稍后,当我尝试使用以下代码获取队列大小时:

queue.size()

它返回0而不是5.为什么?

此外,是否有可能获得当前队列中的元素数量?

1 个答案:

答案 0 :(得分:1)

int构造函数参数是initial capacity,而不是最初存在的元素数。

PriorityBlockingQueue.size()返回集合中存在的元素数量; PriorityBlockingQueue.remainingCapacity()返回可用容量。