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

标签 java spring spring-bean

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

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

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

然后我使用注入(inject)将其传递给 Java 中的构造函数,并在构造函数中对其进行初始化。在 Java 中,我定义并完成了以下操作:

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

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

queue.size()

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

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

最佳答案

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

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

关于java - 如何使用 Java 和 Spring 知道 BlockingQueue 中当前有多少元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35270819/

相关文章:

java - 动态创建多个微调器+适配器+监听器的最佳方式

java - 为什么从抽象 Serialized 继承时会收到 InvalidClassException 'no valid constructor'?

java - 通过多个函数返回

java - 检查 null @autowired 字段,并手动初始化它

java - 哪种方法对碱基和排序速度更优?

java - 反射(reflect) env 变量重新加载到 java bean

java - 当我可以直接使用类名访问唯一的静态方法时,创建 Spring bean 是否有利

java - Spring bean创建流程: how to know when it is finished?

java - Richfaces 数据表 PDF 导出

spring - spring请求参数转换怎么做