Callable
是 Java 中的一个接口,用于定义具有返回值的异步计算任务。
Callable
的定义如下:
public interface Callable<V> {
V call() throws Exception;
}
与 Runnable
不同,Callable
的 call
方法可以有返回值,并且能够抛出异常。
Callable
通常与线程池结合使用,通过 submit
方法将 Callable
任务提交到线程池中执行,并获取一个 Future
对象来处理任务的结果和状态。
以下是一个简单的示例,展示了如何使用 Callable
:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableExample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executor = Executors.newFixedThreadPool(1);
Callable<Integer> task = () -> {
// 模拟耗时计算
Thread.sleep(2000);
return 42;
};
Future<Integer> future = executor.submit(task);
// 等待任务完成并获取结果
Integer result = future.get();
System.out.println("结果: " + result);
executor.shutdown();
}
}
在上述示例中,定义了一个 Callable
任务,然后通过线程池执行该任务,并使用 Future
来获取任务的结果。
Callable
为 Java 中的异步编程提供了一种更灵活和强大的方式,使得可以方便地处理有返回值的异步操作。