一个用于完整 Web 应用程序的通用执行器服务(固定线程池)还是为每个请求使用执行器服务的新线程池?



为了缩短请求的响应时间,我计划使用executorService并将我的工作划分到多个线程中,并减少请求的响应时间。

但是,在阅读文章和博客后,为每个请求创建一个新的线程池也会影响性能。

闲置的方法是什么,- 1. 我应该为每个请求创建一个新的线程池吗? 或 2. 我是否应该为整个应用程序保留一个固定的线程池,并让每个请求都使用该线程池中的线程?

那么,创建线程池的意义何在? 通常是两个原因中的一个或两个:

答( 您的应用程序可以重用线程,而不是通过销毁旧线程并创建新线程来替换它们来浪费大量 CPU 时间。

B( 它允许应用程序控制它创建的线程数。 当大量任务(例如,客户端请求(进入时,您的应用程序不必创建无限数量的资源密集型线程,而是可以在一个漂亮的紧凑队列中创建任务对象,然后它可以使用一些合理数量的线程来处理它们

创建线程池意味着创建和销毁这些管理的线程。 因此,如果您为每个客户端请求创建并销毁了一个新的线程池,您将完全击败原因 (A( 和 (B(。


* 优选地由主机上可用的 CPU 数量、内存量等决定。

最新更新