Callable线程实例
时间: 2024-09-09 08:08:31 浏览: 44
Callable是一个在Java 5之后引入的接口,它与Runnable接口类似,都用于被线程执行的任务。然而,相比于Runnable,Callable提供了更多的功能,它能够返回一个值,并且可以抛出一个异常。
当使用Callable时,你可以利用ExecutorService的submit方法来提交任务。submit方法会返回一个Future对象,你可以通过这个对象来获取Callable任务执行的结果。Future对象还允许检查任务是否完成,取消任务,以及等待任务完成并获取结果。
Callable的主要特点包括:
1. 可以返回一个结果,这个结果可以通过Future.get()方法获取。
2. 可以抛出检查型异常(checked exception),因为它是泛型的,可以指定一个异常列表。
3. 通常与Executor框架一起使用,而不是直接使用Thread。
使用Callable的一个典型例子是:
```java
// 创建Callable任务
Callable<String> task = () -> {
// 执行某些操作
return "结果";
};
// 提交任务到线程池
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(task);
// 获取结果
String result = future.get(); // 这里会阻塞直到Callable执行完成并返回结果
// 关闭线程池
executor.shutdown();
```
阅读全文