ExecutorService.submit使用案例
时间: 2023-07-11 20:17:51 浏览: 47
下面是一个使用 ExecutorService.submit() 方法的示例:
```java
ExecutorService executorService = Executors.newFixedThreadPool(5); // 创建一个大小为 5 的线程池
List<Future<String>> resultList = new ArrayList<>(); // 用来保存任务执行结果的列表
for (int i = 0; i < 10; i++) {
final int taskId = i;
resultList.add(executorService.submit(new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(1000); // 模拟一个耗时 1 秒钟的任务
return "Task #" + taskId + " has been completed.";
}
}));
}
executorService.shutdown(); // 关闭线程池,等待所有任务执行完成
for (Future<String> future : resultList) {
try {
String result = future.get(); // 获取任务执行结果
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
```
上面的代码中,首先创建一个大小为 5 的线程池 `executorService`,然后循环提交 10 个 Callable 任务到线程池中执行,并将执行结果保存到 `resultList` 列表中。
最后,关闭线程池,并通过循环遍历 `resultList` 列表获取每个任务的执行结果,并打印到控制台上。
需要注意的是,使用 `submit()` 方法提交任务时,会返回一个 Future 对象,可以用来获取任务执行结果或者取消任务。在获取任务执行结果时,需要注意异常处理,比如 InterruptedException、ExecutionException 等异常。