java ThreadPoolExecutor 怎么获取结果集
时间: 2023-10-17 21:15:35 浏览: 72
2024 Java面试宝典合集
对于您的问题,您可以将任务提交到线程池,并使用Future对象来获取返回结果。具体步骤如下:
1. 创建ThreadPoolExecutor对象,并设置核心线程数、最大线程数、队列容量等参数;
2. 创建Callable对象,重写call()方法,完成需要处理的任务,并返回结果;
3. 使用submit()方法将Callable对象提交到线程池,得到Future对象;
4. 调用Future对象的get()方法,以阻塞方式等待任务执行完成并获取任务的返回结果。
示例代码如下:
```
// 创建线程池对象
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60, // 线程空闲时间
TimeUnit.SECONDS, // 时间单位
new LinkedBlockingQueue<Runnable>(1000)); // 队列容量
// 创建Callable对象
Callable<String> task = new Callable<String>() {
public String call() throws Exception {
// 执行需要处理的任务
Thread.sleep(5000);
return "任务执行完成!";
}
}
// 提交任务并获取Future对象
Future<String> future = executor.submit(task);
// 等待任务执行完成并获取结果
String result = future.get();
System.out.println(result);
```
注意,获取结果时需要处理可能抛出的异常,如TimeoutException和ExecutionException。另外,如果不想阻塞等待结果,可以使用isDone()方法来判断任务是否已完成,或者使用带超时时间的get()方法来等待一定时间后获取结果。
阅读全文