如何选择线程池?



例如,我有一个包含 3 层的应用程序:

HTTP Layer -> App Logic -> Db Layer 

每一层都使用一个线程池。

我应该使用一个线程池来处理吗?

或者,最好的处理方法是针对不同的层使用不同的池。因为我知道对 DB-Layer 的一些查询既复杂又繁重,我更喜欢对数据库逻辑使用单独的层。

在这种情况下如何选择线程池大小?我应该中继到处理器计数吗?因为如果我使用 3 个线程池,它们应该会互相打扰。还是我的假设错了?

首先要知道线程不与任何特定层紧密耦合,这取决于特定问题陈述的用法。

您也可以对所有层仅使用一个线程,并调用在其他层中定义的方法/函数。 使用许多线程的缺点是它可能导致死锁,并且处理它们并不容易。因此,请尝试尽量减少创建更多线程。创建线程和管理它们的原因是在引擎盖下并不容易。

当涉及到线程池大小时 - 它的数量不应该少或高,基本思想是利用资源来执行操作。 理想情况下,Runtime.getRuntime().availableProcessors()用于获取处理器数量。

最新更新