我正在使用ThreadPoolExecutor = corePoolSize = maxPoolSize = queueSize15
每个传入的请求都会产生7个任务,并由该线程池执行。

即使每个单独的任务在排定后花费的时间少于3秒,整个请求所花费的时间也要长得多。

我怀疑系统没有足够的线程和正在排队的任务。

我记录了每个传入请求的以下信息。

getActiveCount()
getLargestPoolSize()
getPoolSize()
getQueue().size()

我注意到系统并没有出现线程不足的情况。
getPoolSizegetLargestPoolSize值始终为15-这是预期的结果。
getQueue().size()始终为0-因此没有任务排队。
getActiveCount()值始终在1-2之间。

为什么池中的其余线程无法正常工作?

是“getActiveCount()-返回正在主动执行任务的线程的大概数量。”正确使用的API?

最佳答案

正如@Thomas所建议的那样,该池正在根据需要创建线程,因此,如果您只给该池一次执行1-2个任务,则该池将只有1-2个 Activity 线程。如果您希望它更忙,则需要立即为其提供更多任务。

10-07 18:46