Java中可以使用多线程来进行并发计算。下面是一个示例的Java代码,展示了如何通过多线程对数组元素进行求和操作:
import java.util.concurrent.*;
?
public class SumCalculator {
? ? public static void main(String[] args) throws InterruptedException, ExecutionException {
? ? ? ? int[] array = {1, 2, 3, 4, 5}; // 要求和的数组
? ? ? ??
? ? ? ? // 创建ExecutorService来管理线程池
? ? ? ? ExecutorService executor = Executors.newFixedThreadPool(array.length);
? ? ? ??
? ? ? ? // 定义FutureTask列表存放每个任务的结果
? ? ? ? List<FutureTask<Integer>> tasks = new ArrayList<>();
? ? ? ??
? ? ? ? for (int i : array) {
? ? ? ? ? ? Callable<Integer> task = () -> sum(i); // 将每个数字传递给sum()函数进行求和
? ? ? ? ? ??
? ? ? ? ? ? FutureTask<Integer> futureTask = new FutureTask<>(task);
? ? ? ? ? ? tasks.add(futureTask);
? ? ? ? ? ??
? ? ? ? ? ? executor.submit(futureTask); // 提交任务到线程池
? ? ? ? }
? ? ? ??
? ? ? ? // 关闭线程池
? ? ? ? executor.shutdown();
? ? ? ??
? ? ? ? // 等待所有任务完成
? ? ? ? while (!executor.isTerminated()) {}
? ? ? ??
? ? ? ? // 获取每个任务的结果并相加得到最终结果
? ? ? ? int result = 0;
? ? ? ? for (FutureTask<Integer> task : tasks) {
? ? ? ? ? ? result += task.get();
? ? ? ? }
? ? ? ??
? ? ? ? System.out.println("Sum of the elements in the array is: " + result);
? ? }
? ??
? ? private static Integer sum(int num) {
? ? ? ? return num * num; // 这里只是简单地返回输入值的平方作为示例
? ? }
}
上述代码会创建一个包含指定数量线程的线程池(在本例中与数组长度相同),然后将每个数组元素分配给不同的线程进行求和运算。最后,通过调用get()
方法从每个任务中获取结果,并将其相加得到最终的求和结果。