0

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

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

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

4

1 回答 1

2

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

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

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

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

于 2015-03-10T18:13:41.503 回答