【发布时间】:2023-01-06 22:03:40
【问题描述】:
假设我得到整数 a 和 b,这样就形成了一个感兴趣的范围,由 [a,b] 中的整数组成。该范围可以跨越 10^9 整数。我想对所有整数 a <= n <= b 的给定函数 f : N -> N 求和。范围非常大,所以我想使用多线程来做到这一点。
不那么正式,我想并行化以下代码:
long sum = 0;
for (long n = a ; n <= b ; n++)
sum += f(n);
System.out.println(sum);
理想情况下(至少在我看来),该范围将平均分配给处理器可用的可用线程数(假设 f(n) 具有与范围内的每个 n 几乎相同的复杂性和运行时间)。这些值是完全独立的,f实际上可以是任何函数。例如,它可以输出数字的位数之和,但它实际上可以是任何东西,这只是一个例子。
有没有一种通用的方法可以使用多线程在 Java 中做到这一点?
【问题讨论】:
标签: java multithreading algorithm performance loops