java多线程future
在Java中,Future
接口和 Callable
函数式接口一起被用来支持异步计算。Future
表示一个可能完成的异步计算的结果,通过 get
方法可以获取计算的结果。
下面是一个使用 Future
的简单示例:
import java.util.concurrent.*;
public class FutureExample {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
// 提交任务并获取Future对象
Future<Integer> future = executor.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
// 模拟耗时计算
Thread.sleep(2000);
return 123;
}
});
// 在这里可以做其他任务
System.out.println("做其他任务...");
// 获取计算结果,如果计算未完成则会阻塞
Integer result = future.get();
System.out.println("计算结果: " + result);
// 关闭ExecutorService
executor.shutdown();
}
}
在这个例子中,我们创建了一个 ExecutorService
来执行异步任务,使用 submit
方法提交了一个 Callable
任务。Future
对象可以用来查询任务是否完成,并获取计算结果。当我们调用 future.get()
方法时,如果任务尚未完成,调用线程会等待直到任务完成。