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

how to know how many elements are currently in a BlockingQueue using Java and Spring

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

我使用 beans 定义了一个队列,其大小设置为最多 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()

它 returns 0 而不是 5。为什么?

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

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

PriorityBlockingQueue.size() returns the number of elements present in the collection; PriorityBlockingQueue.remainingCapacity() returns可用容量。