Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ThreadPoolExecutor getActiveCount()为1,但getQueue返回空队列,为什么?_Java_Multithreading_Spring_Threadpool_Executorservice - Fatal编程技术网

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()正在返回近似值。不管是什么情况,都没有等待执行的任务