我正在使用ThreadPoolExecutor
= corePoolSize
= maxPoolSize
= queueSize
的15
每个传入的请求都会产生7个任务,并由该线程池执行。
即使每个单独的任务在排定后花费的时间少于3秒,整个请求所花费的时间也要长得多。
我怀疑系统没有足够的线程和正在排队的任务。
我记录了每个传入请求的以下信息。
getActiveCount()
getLargestPoolSize()
getPoolSize()
getQueue().size()
我注意到系统并没有出现线程不足的情况。
getPoolSize
和getLargestPoolSize
值始终为15-这是预期的结果。getQueue().size()
始终为0-因此没有任务排队。getActiveCount()
值始终在1-2之间。为什么池中的其余线程无法正常工作?
是“
getActiveCount()
-返回正在主动执行任务的线程的大概数量。”正确使用的API? 最佳答案
正如@Thomas所建议的那样,该池正在根据需要创建线程,因此,如果您只给该池一次执行1-2个任务,则该池将只有1-2个 Activity 线程。如果您希望它更忙,则需要立即为其提供更多任务。