【问题标题】:A common executorservice(fixed thread pool) for complete web application or a new thread pool using executorService for each and every request?用于完整 Web 应用程序的通用 executorservice(固定线程池)还是为每个请求使用 executorService 的新线程池?
【发布时间】:2019-02-10 23:16:54
【问题描述】:

为了提高请求的响应时间,我打算使用 executorService 并将我的工作分配给多个线程,以减少请求的响应时间。

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

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

【问题讨论】:

标签: java multithreading executorservice


【解决方案1】:

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

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

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

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多