有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为我的体系结构确定要提交的任务的最佳数量?

我理解,对于CPU受限的任务,通常每个核心需要1个线程,否则可以开始在每个核心添加更多线程。但是每个线程的任务呢(或者它们是同一个线程中的一个任务)

我想弄清楚如何把一个大问题分解成Runnable的最佳数量,这样我就可以把它们提交给Executor。我的理解是,然后可以配置Executor将使用的线程数(因此不一定是1到1)

所以我的问题是:假设我发现对于给定的应用程序,我确定每个内核5个线程是最佳的比例但我首先应该如何确定要创建的最佳任务数(Runnables


共 (2) 个答案

  1. # 1 楼答案

    你可以把它做成一个旋钮,直到你高兴为止。适用于工作站的可能不适用于部署服务器。视情况而定。一只手拿着旋钮,另一只手拿着秒表,对它进行基准测试,直到你对结果满意为止

  2. # 2 楼答案

    你知道阿姆达尔定律吗

    使用此公式,您可以确定多线程应用程序相对于单线程的潜在加速比

    Amdahl's Law

    总之,你有以下公式:

    加速=1/(1-p)+(p/n)

    在哪里

    p是平行分数, 1-p是顺序分数,并且 n是处理器的数量

    如果你有一个由60%的并发代码和40%的顺序代码组成的应用程序,那么并行部分为0.6,顺序部分为0.4

    希望这对你有帮助