维护自己的线程池的库有什么影响?

What is the impact of libraries that maintain their own threads pool?

我在项目中使用 Google Guava 和 Netflix Hystrix 库。每个库都带有自己的线程池,您可以配置它。

那就是考虑到它的影响。我的意思是每个库都在维护自己的线程池,当然,每个硬件都有自己的最佳设置。

假设我在其线程池中将 Guava 设置为 50,将 Hystrix 在其线程池中设置为 40。会发生什么?他们会争夺资源吗?

我不熟悉 Hystrix,但是你的 Guava 示例是:

ListeningExecutorService service =
    MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));

在这种情况下,Guava 根本不提供线程池...您正在使用标准 JDK 在 您的 代码中配置线程池创建线程池的方法,然后使用 Guava 方法包装 ExecutorService

为了(希望)回答您的问题,如果您有两个独立的线程池,它们实际上是独立的……它们不会共享任何线程。如果一个线程有 50 个,另一个线程有 40 个,则线程总数为 90。同样,我不知道你用 Hystrix 做的是如何工作的,但如果它类似于你用 Guava 做的事情(使用 Executors.newFixedThreadPool(n) 创建线程池并将其传递给其他东西),它是可能的只创建一个线程池并让两个库使用它,在这种情况下它们将共享线程。