在响应数据中,我收到一条错误消息。 我想将池大小从10增加到100 !!
{
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Task java.util.concurrent.FutureTask@428373db rejected from java.util.concurrent.ThreadPoolExecutor@7114477d[Running, pool size = 10, active threads = 10, queued tasks = 0, completed tasks = 30014]"
}
答案 0 :(得分:1)
让我们从the docs看:
核心和最大池大小
ThreadPoolExecutor
将根据getPoolSize()
(请参见corePoolSize
)和getCorePoolSize()
(请参见{{1 }})。当在方法execute(maximumPoolSize
中提交新任务且运行的线程少于getMaximumPoolSize()
时,即使其他工作线程处于空闲状态,也会创建一个新线程来处理请求。如果正在运行的线程多于java.lang.Runnable
但少于corePoolSize
,则仅当队列已满时才创建新线程。通过将corePoolSize
和maximumPoolSize
设置为相同,可以创建固定大小的线程池。 通过将corePoolSize
设置为本质上不受限制的值,例如maximumPoolSize
,您可以使池容纳任意数量的并发任务。最典型的是,核心和最大池大小仅在构造时设置,但也可以使用maximumPoolSize
和Integer.MAX_VALUE
动态更改。
因此,请使用setCorePoolSize(int)
值作为参数的setMaximumPoolSize
方法。