我正在尝试将素数计数器并行化作为练习。我重构了原始代码并将长循环与其他循环分开,以便我可以并行化它们。现在我有以下代码并且多线程看起来很困难,因为我需要跟踪找到的素数(按顺序)并计算找到的素数的数量。
nthPrime(long n) 获取要搜索的素数的数量。返回第 n 个素数。count 是一个 ArryList
public static long nthPrime(long n) {
count.add((long) 1);
if (n < 2) {
count.add((long) 3);
return getCount();
}
count.add((long) 3);
if (n == 2) {
return getCount();
}
step = 4;
candidate = 5;
checker(n, step, candidate);
return getCount();
}
private static long checker(long n, int step, long candidate) {
while (count.size() < n) {
if (Checker.isPrime(candidate)) {
// checks the number for possible prime
count.add(candidate);
}
step = 6 - step;
candidate += step;
}
return getCount();
}
关于使用 util.concurrent 或线程来并行化的任何想法?
谢谢