码迷,mamicode.com
首页 > 其他好文 > 详细

JDK 中Future模式使用

时间:2019-02-03 15:30:54      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:stack   ted   技术   ado   art   pre   service   script   proc   

  • JDK 中Future模式的基本结构如下:
  • 技术图片

    其中Future接口相当于订单或契约,拿着她可以取到买的Mac Pro,也就是可以取到真实数据。RunnableFuture继承了Future和Runnable两个接口,其中run方法用用于构造真实数据。她有一个具体的实现FutureTask类。FutureTask会调用Callable接口完成实际的数据组装工作。

    1. 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模式使用

    标签:stack   ted   技术   ado   art   pre   service   script   proc   

    原文地址:http://blog.51cto.com/3265857/2348679

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!