Java ThreadPoolExecutor getActiveCount()为1,但getQueue返回空队列,为什么?
Java ThreadPoolExecutor getActiveCount()为1,但getQueue返回空队列,为什么?,java,multithreading,spring,threadpool,executorservice,Java,Multithreading,Spring,Threadpool,Executorservice,ThreadPoolExecutor getActiveCount()为1,但getQueue返回空队列,为什么 我有一个类型为ThreadPoolExecutor的执行器 我调用getActiveCount()并得到1 但是当我调用getQueue.size()时,它是0 我的代码是这样的 System.out.println(taskExecutor.getActiveCount()); System.out.println(taskExecutor.getThreadPoolEx
ThreadPoolExecutor getActiveCount()
为1,但getQueue
返回空队列,为什么
我有一个类型为ThreadPoolExecutor的执行器
我调用getActiveCount()并得到1
但是当我调用getQueue.size()时,它是0
我的代码是这样的
System.out.println(taskExecutor.getActiveCount());
System.out.println(taskExecutor.getThreadPoolExecutor().getQueue().size());
所以我很困惑,为什么这两个不一样?根据javadocs(我的重点)
getActiveCount()
:返回执行任务的活跃线程的近似数
getQueue()
:返回此执行器使用的任务队列
现在解释一下getQueue()
返回任务等待执行的队列,一旦任务准备好执行,它就会从队列中取出并交给线程。另外,请记住,getActive()
返回近似值,不应在任何类型的逻辑中使用
所以你的问题有两个可能的答案。有一个任务正在运行。。。或getActive()正在返回近似值。不管是什么情况,都没有等待执行的任务