我在我们的项目中使用 Google Guava 和 Netflix Hystrix 库。每个库都附带有自己的线程池,您可以对其进行配置。
那是考虑到它的影响。我的意思是每个库都在维护自己的线程池,当然,每个硬件都有自己的最佳设置。
假设我在其线程池中将 Guava 设置为 50,在其线程池中将 Hystrix 设置为 40。会发生什么?他们会争夺资源吗?
我在我们的项目中使用 Google Guava 和 Netflix Hystrix 库。每个库都附带有自己的线程池,您可以对其进行配置。
那是考虑到它的影响。我的意思是每个库都在维护自己的线程池,当然,每个硬件都有自己的最佳设置。
假设我在其线程池中将 Guava 设置为 50,在其线程池中将 Hystrix 设置为 40。会发生什么?他们会争夺资源吗?
我对 Hystrix 不熟悉,但是您对 Guava 的示例是:
ListeningExecutorService service =
MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
在这种情况下,Guava 根本不提供线程池......您正在使用标准 JDK 方法在代码中配置线程池以创建线程池,然后ExecutorService
使用 Guava 方法包装它。
为了(希望)回答您的问题,如果您有两个独立的线程池,它们实际上是独立的......它们不会共享任何线程。如果一个有 50 个线程,一个有 40 个线程,那么您将有 90 个线程。同样,我不知道您使用 Hystrix 所做的任何事情是如何工作的,但如果它与您使用 Guava 所做的类似(使用创建线程池Executors.newFixedThreadPool(n)
并将其传递给其他东西),则可以只创建一个线程pool 并让两个库都使用它,在这种情况下它们将共享线程。