使用Java中的ExecutorService和Future来实现。首先创建一个ExecutorService对象,它将管理一组线程,该组线程将处理所有提交的任务。接下来,我们定义一个Callable对象,该对象实现了代码逻辑,该逻辑将在while循环中重复执行。我们可以通过调用ExecutorService.submit()方法将此Callable对象提交给ExecutorService。与之前的while循环不同,每次调用都会返回一个Future对象,该对象代表即将完成的计算,可以用它来检查计算是否已完成,并获取其结果。
例如,在下面的示例中,我们将从1到10进行求和,并使用10个线程并行处理。
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class ParallelWhileLoop {
public static void main(String[] args) throws Exception {
int nThreads = 10;
int sum = 0;
ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
List> tasks = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
tasks.add(new SumTask(i));
}
List> futures = executorService.invokeAll(tasks);
for (Future future : futures) {
sum += future.get();
}
System.out.println("The sum is " + sum);
executorService.shutdown();
}
private static class SumTask implements Callable {
private final int n;
public SumTask(int n) {
this.n = n;
}
@Override
public Integer call() {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
}
}