Future接口能干什么
Future是JAVA5新加的一个接口,它提供了一种 异步并行计算的功能
如果主线程需要执行一个很耗时的计算任务,我们就可以通过future把这个任务放到异步线程中执行。主线程继续处理其他任务或者先行结束,再通过Future获取计算结果。
- Runnable接口 (实现多线程)
- Callable接口 (有返回结果)
- Future接口和FutureTask实现类
目的:异步多线程执行且返回有结果 三个特点
- 多线程
- 有返回
- 异步任务
通过下图可以看到FutureTask实现了RunnableFuture接口,满足了线程和异步任务的特点
再通过 api可以看到FutureTask的构造方法传入了 Callable<>接口。
示例:
public class CompltableFutureDemo { public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask<String> futureTask = new FutureTask<>(new MyThread()); Thread t1 = new Thread(futureTask,"t1"); t1.start(); //获取返回结果 System.out.println(futureTask.get()); } static class MyThread implements Callable<String>{ @Override public String call() throws Exception { System.out.println("--------come in call()"); return "hello callable"; } } }
运行结果: