JDK 中Future模式使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK 中Future模式使用相关的知识,希望对你有一定的参考价值。
- JDK 中Future模式的基本结构如下:
其中Future接口相当于订单或契约,拿着她可以取到买的Mac Pro,也就是可以取到真实数据。RunnableFuture继承了Future和Runnable两个接口,其中run方法用用于构造真实数据。她有一个具体的实现FutureTask类。FutureTask会调用Callable接口完成实际的数据组装工作。
-
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(); } }
以上是关于JDK 中Future模式使用的主要内容,如果未能解决你的问题,请参考以下文章