帮我写一个java中带返回值的线程池代码
时间: 2024-05-11 15:13:44 浏览: 119
以下是一个Java中带返回值的线程池代码的示例:
```java
import java.util.concurrent.*;
public class ThreadPoolWithReturnValueExample {
public static void main(String[] args) throws InterruptedException {
// 创建一个线程池,同时设置最大线程数为2
ExecutorService executor = Executors.newFixedThreadPool(2);
// 提交一个Callable任务给线程池,并返回Future对象
Future<Integer> future1 = executor.submit(new CallableTask(10));
Future<Integer> future2 = executor.submit(new CallableTask(20));
// 等待任务完成,并获取结果
try {
int result1 = future1.get();
int result2 = future2.get();
System.out.println("Result1: " + result1);
System.out.println("Result2: " + result2);
} catch (ExecutionException e) {
e.printStackTrace();
}
// 关闭线程池
executor.shutdown();
}
// 定义一个Callable任务,计算从1到n的和
private static class CallableTask implements Callable<Integer> {
private int n;
public CallableTask(int n) {
this.n = n;
}
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
}
}
```
在上面的示例中,我们创建了一个线程池并设置最大线程数为2。然后,我们将两个Callable任务提交给线程池,并使用Future对象获取它们的结果。最后,我们关闭线程池以释放资源。
阅读全文