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