在Java中,Future
和Callable
接口通常用于异步编程,特别是在java.util.concurrent
包中。这两个接口常常一起使用,Callable
对象用于生产任务的结果,而Future
用于表示可能还未完成的任务的结果。
以下是一个简单的示例,展示了如何使用这两个接口:
import java.util.concurrent.*;
public class FutureCallableExample {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
// 提交一个Callable任务
Future<String> future = executor.submit(new Callable<String>() {
@Override
public String call() throws Exception {
// 模拟耗时操作
Thread.sleep(2000);
return "Hello from Callable!";
}
});
// 等待任务完成并获取结果
System.out.println("Task submitted, waiting for result...");
String result = future.get(); // 阻塞直