为了缩短请求的响应时间,我计划使用executorService并将我的工作分配到多个线程中,以减少请求的响应时间。
但是在阅读文章和博客之后,为每个请求创建一个新的线程池也会影响性能。
什么是空闲方法,- 1.我应该为每个请求创建一个新的线程池吗? 要么 2.我应该为整个应用程序保留一个固定的线程池,并让每个请求使用该单个线程池中的线程吗?
答案 0 :(得分:0)
那么,创建线程池有什么意义呢?通常是以下两个原因之一或全部:
A)您的应用程序可以重新使用线程,而不必通过销毁旧线程并创建新线程来替换它们来浪费大量CPU时间。
B)它允许您的应用程序控制其创建的线程数。当出现大量任务(例如,客户端请求)时,您的应用程序可以创建一个不错的,紧凑的队列中的任务对象,然后使用合理数量的*对象,而不是创建大量任务(例如客户端请求)时不占用大量资源的线程。线程来处理它们
创建线程池意味着创建和销毁这些池管理的线程。因此,如果您为每个客户端请求创建和销毁了一个新的线程池,那么您将完全克服两个原因(A)和(B)。
*最好由主机上可用的CPU数量,内存量等确定。