【并发编程】Java的Future机制详解(Future接口和FutureTask类)
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class FutureExample {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newCachedThreadPool();
Callable<Integer> task = () -> {
// 模拟耗时的计算任务
Thread.sleep(2000);
return 42;
};
Future<Integer> future = executor.submit(task);
// 在任务完成前可以继续执行其他任务
System.out.println("做其他任务...");
// 检查任务是否完成,如果完成则获取结果
if (future.isDone()) {
// 获取任务返回的结果
System.out.println("任务返回的结果: " + future.get());
}
executor.shutdown(); // 关闭ExecutorService
}
}
这段代码演示了如何使用Java的Future机制来异步执行任务。首先创建了一个可缓存的线程池ExecutorService
,然后提交了一个实现了Callable
接口的任务。任务在另一个线程中执行,而主线程可以继续执行其他任务。当需要任务结果时,可以使用isDone()
方法检查任务是否已完成,并使用get()
方法获取结果。最后,关闭了ExecutorService
来释放资源。这个例子简单而直接地展示了Future模式的使用方法。
评论已关闭