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

时间:2015-03-10 10:28:03

标签: concurrency threadpool guava hystrix

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

多数人意识到了这种影响。我的意思是每个库都维护着自己的线程池,当然,每个硬件都有自己的最佳设置。

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

1 个答案:

答案 0 :(得分:2)

我不熟悉Hystrix,但你对番石榴的例子是:

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

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

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