java循环里使用多线程取回返回值
时间: 2024-12-26 19:11:16 浏览: 8
在 Java 中,如果你想要在循环中并行地执行多个任务并获取每个任务的结果,可以结合 `Thread` 类或者 `ExecutorService` 来实现多线程。下面是一个简单的示例,展示了如何在循环中启动新线程,并使用 Future 接收返回值:
```java
import java.util.concurrent.*;
public class MultiThreadExample {
public static void main(String[] args) {
// 创建固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
int tasksCount = 10; // 循环次数
for (int i = 0; i < tasksCount; i++) {
final int taskIndex = i;
// 提交一个新的 Runnable 实现到线程池
Future<Integer> future = executor.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
// 这里是你要执行的任务,例如计算
return calculate(taskIndex);
}
});
// 在主线程中处理future的结果,当异步任务完成时
try {
int result = future.get(); // 等待结果
System.out.println("Task " + taskIndex + " returned: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
// 关闭线程池
executor.shutdown();
}
private static int calculate(int index) {
// 这里是你实际的计算逻辑
return index * index;
}
}
```
在这个例子中,`Callable` 被用于定义需要返回值的任务,而 `Future` 则允许我们在主线程中等待并获取这些任务的结果。注意,为了优雅地处理异常,通常会在 `get()` 方法中捕获可能抛出的 `InterruptedException` 或 `ExecutionException`。
阅读全文