java多线程执行for循环有返回结果
时间: 2023-07-27 20:23:55 浏览: 59
在Java中,可以使用Callable和Future接口来实现多线程执行for循环并返回结果。具体实现步骤如下:
1. 定义一个实现Callable接口的任务类,重写call()方法,在该方法中编写需要执行的for循环代码,并将结果返回。
2. 创建一个ExecutorService线程池对象,调用submit()方法提交任务,返回一个Future对象。
3. 调用Future的get()方法获取执行结果。
下面是一个简单的示例代码:
```
import java.util.concurrent.*;
public class MultiThreadForLoop {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 创建一个线程池
ExecutorService executorService = Executors.newFixedThreadPool(2);
// 提交任务
Future<Integer> future1 = executorService.submit(new MyTask(1, 10));
Future<Integer> future2 = executorService.submit(new MyTask(11, 20));
// 获取执行结果
int result1 = future1.get();
int result2 = future2.get();
System.out.println("result1 = " + result1);
System.out.println("result2 = " + result2);
// 关闭线程池
executorService.shutdown();
}
}
class MyTask implements Callable<Integer> {
private int start;
private int end;
public MyTask(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
}
```
在上面的示例中,我们创建了一个线程池,并提交了两个任务。每个任务都是一个MyTask对象,它实现了Callable接口。在MyTask的call()方法中,我们编写了一个for循环,计算出从start到end的整数之和,并将结果返回。最后,我们使用Future对象的get()方法获取执行结果,并输出到控制台。