【问题标题】:how to choose thread pool(s)?如何选择线程池?
【发布时间】:2020-06-16 18:34:53
【问题描述】:

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

HTTP Layer -> App Logic -> Db Layer 

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

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

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

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

【问题讨论】:

  • 1. 我应该使用一个线程池来处理吗?,你的意思是在每一层上? 2. 所有图层都在同一台计算机上吗? 3. 这个问题可能更适合Software Engineering,因为它更多的是关于架构而不是实现,如果我理解正确的话。
  • 1.是的,在每一层。 2. 是的,是同一台电脑。 3.好的,我去问问

标签: java multithreading java.util.concurrent


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 2012-02-19
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多