一个用于整个Web应用程序的通用executorservice(固定线程池),还是对每个请求都使用executorService的新线程池?

时间:2018-09-05 18:29:04

标签: java multithreading executorservice

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

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

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

1 个答案:

答案 0 :(得分:0)

那么,创建线程池有什么意义呢?通常是以下两个原因之一或全部:

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

B)它允许您的应用程序控制其创建的线程数。当出现大量任务(例如,客户端请求)时,您的应用程序可以创建一个不错的,紧凑的队列中的任务对象,然后使用合理数量的*对象,而不是创建大量任务(例如客户端请求)时不占用大量资源的线程。线程来处理它们

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


*最好由主机上可用的CPU数量,内存量等确定。