Java Executors.newFixedThreadPool() - Web应用程序中理想的线程数?

时间:2014-05-14 13:57:12

标签: java multithreading concurrency threadpool java.util.concurrent

在Java Web应用程序中,我对使用newFixedThreadPool()

时要创建的理想线程数有疑问

Java Concurrency in Practice中的示例始终建议使用Runtime.getRuntime().availableProcessors() + 1

创建它

然而,在我的Web应用程序中,执行此操作似乎会将系统锁定延长的时间(大约20-30秒),因为还有来自用户和数据库线程的HTTP请求用于读取/写入数据数据库。

是否有人建议在线程池中使用理想的线程数来处理数字,同时仍然有一些内核可用于运行响应迅速的Web应用程序的其他方面?似乎本书中的示例是独立应用程序的理想选择,但不适用于Web应用程序。

1 个答案:

答案 0 :(得分:1)

我认为这完全取决于特定应用程序的架构。提供有用数字的因素太多了 但是,例如Weblogic服务器,可以考虑"通用Web应用程序",使用自调整线程池。它会不断检查性能统计信息并相应地调整线程池(和其他资源) 因此,线程数不是常数,总是远远超过许多可用内核。 正如Sakura所说,你必须进行负载测试才能找到答案。