gpt4 book ai didi

java - 查找等待从 ArrayBlockingQueue 轮询的任务数量?

转载 作者:行者123 更新时间:2023-12-01 22:03:09 24 4
gpt4 key购买 nike

我有一个 ArrayBlockingQueue,它有多个与数据库的连接。许多线程尝试通过轮询来获取连接。队列中可用的最大连接数为50,超过50后,线程必须等待连接放回才能获取数据库连接。

问题是我无法获取在此 ArrayBlockingQueue 等待获取数据库连接的线程数。我查看了文档,似乎没有任何与我想要的相关的内容,因为想要获取数据库连接的任务是线程,我不确定如何手动计算等待数据库连接的任务数量。

感谢任何帮助。

最佳答案

如果不使用反射,我唯一能想到的就是拦截对 ABQ 中任何 poll/remove 方法的调用。您可以扩展 ABQ,让一些计数器在调用它的 super 对应项之前递增,然后最后递减。

private final AtomicInteger count = new AtomicInteger(0);
// if you are using Java 8 I would prefer LongAddr
public T poll(){
count.incrementAndGet();
try {
return super.poll()
}finally{
count.decrementAndGet();
}
}

关于java - 查找等待从 ArrayBlockingQueue 轮询的任务数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33345323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com