ThreadPoolExecutor getActiveCount() 为 1 但 getQueue returns 为空队列,为什么?
ThreadPoolExecutor getActiveCount() is 1 but getQueue returns empty queue, why?
ThreadPoolExecutor getActiveCount()
是 1 但 getQueue
returns 空队列,为什么?
我有一个类型为 ThreadPoolExecutor 的执行器。
我调用 getActiveCount() 并得到 1,
但是当我调用 getQueue.size() 时,它是 0。
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html#getQueue%28%29
我的代码是这样的。
System.out.println(taskExecutor.getActiveCount());
System.out.println(taskExecutor.getThreadPoolExecutor().getQueue().size());
所以我很困惑,为什么这两个不一样?
根据 javadocs(强调我的)
getActiveCount()
:Returns 近似值 主动 执行任务的线程数。
getQueue()
: Returns 任务 queue 被执行者使用。
现在解释... getQueue()
returns任务等待执行的队列,一旦任务准备好执行,它从队列中取出并提供给线程。另外,请记住 getActive()
returns 是一个近似值,不应在任何类型的逻辑中使用。
所以您的问题有 2 个可能的答案。有一项任务 运行... 或 getActive() 正在返回一个近似值。不管怎样,都没有等待执行的任务。
ThreadPoolExecutor getActiveCount()
是 1 但 getQueue
returns 空队列,为什么?
我有一个类型为 ThreadPoolExecutor 的执行器。
我调用 getActiveCount() 并得到 1,
但是当我调用 getQueue.size() 时,它是 0。
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html#getQueue%28%29
我的代码是这样的。
System.out.println(taskExecutor.getActiveCount());
System.out.println(taskExecutor.getThreadPoolExecutor().getQueue().size());
所以我很困惑,为什么这两个不一样?
根据 javadocs(强调我的)
getActiveCount()
:Returns 近似值 主动 执行任务的线程数。
getQueue()
: Returns 任务 queue 被执行者使用。
现在解释... getQueue()
returns任务等待执行的队列,一旦任务准备好执行,它从队列中取出并提供给线程。另外,请记住 getActive()
returns 是一个近似值,不应在任何类型的逻辑中使用。
所以您的问题有 2 个可能的答案。有一项任务 运行... 或 getActive() 正在返回一个近似值。不管怎样,都没有等待执行的任务。