实现Callable方法的线程
时间: 2024-09-17 15:08:52 浏览: 38
Java多线程实现Callable接口
5星 · 资源好评率100%
在Java中,`Callable`是一个接口,用于异步计算任务,它不仅返回一个结果,还可以抛出异常。与传统的`Runnable`不同,`Callable`实现了`FutureTask`的回调机制,允许我们在完成计算后获取结果并处理异常。
当你创建一个实现了`Callable`接口的类时,你可以定义一个计算逻辑的方法,通常用`call()`方法命名。这个方法可以抛出`InterruptedException`或任何其他自定义异常。然后,你可以将这个`Callable`实例提交给`ExecutorService`,例如`ForkJoinPool`, `ThreadPoolExecutor`或`CompletableFuture`,它会创建一个新的线程去执行这个任务。
例如:
```java
public class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
// 计算逻辑
return computeResult();
}
private int computeResult() {
// ...
}
}
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(new MyCallable());
try {
Integer result = future.get(); // 获取计算结果
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
```
在这个例子中,`future.get()`方法会阻塞,直到计算完成并返回结果。如果在计算过程中抛出了异常,`get()`方法会捕获并重新抛出异常。
阅读全文