在 Java 并发编程中,Callable
和Future
是两个非常重要的接口,它们为我们提供了一种异步执行任务并获取结果的方式。在这篇文章中,我们将深入了解Callable
和Future
的背景、使用例子和应用场景,以及相关的常见面试题。
一、背景
在 Java 中,我们通常使用Thread
来创建线程并执行任务。但是,使用Thread
存在一些局限性。例如,我们无法直接获取线程执行的结果,也无法判断线程是否执行完成。为了解决这些问题,Java 5 引入了Callable
和Future
接口。
Callable
接口类似于Runnable
接口,但是它可以返回一个结果。Future
接口则用于表示异步计算的结果。通过使用Callable
和Future
,我们可以在一个线程中启动另一个线程执行任务,并在需要的时候获取任务的结果。
二、使用例子
- 创建一个实现
Callable
接口的类
import java.util.concurrent.Callable;
class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
// 模拟耗时任务
Thread.sleep(2000