【发布时间】:2011-04-24 00:18:20
【问题描述】:
我正在使用ThreadPoolExecutor 和corePoolSize = maxPoolSize = queueSize = 15
每个传入的请求都会产生 7 个任务,用这个线程池执行。
即使每个单独的任务在被安排后用时不到 3 秒,但整个请求所需的时间要长得多。
我怀疑系统缺少正在排队的线程和任务。
我为每个传入请求记录了以下信息。
getActiveCount()
getLargestPoolSize()
getPoolSize()
getQueue().size()
我注意到系统并没有缺少线程。
getPoolSize 和 getLargestPoolSize 的值始终为 15 - 这是预期的结果。
getQueue().size() 始终为 0 - 因此没有任务排队。
getActiveCount() 值始终介于 1-2 之间。
为什么池中的其余线程不工作?
是“getActiveCount()-返回正在主动执行任务的线程的大概数量。”使用正确的 API 吗?
【问题讨论】:
标签: java multithreading