其中Future接口至关于订单或契约,拿着她能够取到买的Mac Pro,也就是能够取到真实数据。RunnableFuture继承了Future和Runnable两个接口,其中run方法用用于构造真实数据。她有一个具体的实现FutureTask类。FutureTask会调用Callable接口完成实际的数据组装工做。app
JDK内置的Future基本使用异步
/** * Created with IntelliJ IDEA. * User: zyg * Date: 2019/2/2 * Time: 下午2:41 * Description:使用callable实例构造一个FutureTask实例,并将其提交给线程池 */ public class RealData implements Callable<String> { private String para; public RealData(String para) { this.para = para; } //实现Callable接口,其call方法会构造真实数据并返回 public String call() throws Exception { StringBuffer sb = new StringBuffer(); for (int i = 0; i < 10; i++) { Thread.sleep(200); sb.append(para); } return sb.toString(); } public static void main(String[] args) { //使用Callable接口实例构造FutureTask实例 FutureTask future = new FutureTask(new RealData("大幂幂")); //定义线程池 ExecutorService exec = Executors.newFixedThreadPool(1); //使用现场异步处理真实数据 exec.submit(future); System.out.println("请求完毕,能够接着作其余事情..."); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } //业务处理完毕,如今假设须要真实数据,使用Callbale接口的get方法,获取真实数据 //若是真实数据还没准备好则阻塞,这个过程在模拟Future模式的时候已实现 try { System.out.println("数据{}," + future.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } exec.shutdown(); } }