假设一个任务执行需要花费一些时间,为了省去不必要的等待时间,可以先获取一个提货单,即future,然后继续处理别的任务,知道货物到达,即任务完成得到结果,此时可以使用提货单提货,即通过future得到返回值。

如下代码所示,加载数据需要10秒中,测试可以先开始任务,随后处理其他的事情,等其他事情都处理完后再取结果。

import java.util.concurrent.Callable;

public class MyJob implements Callable<Integer> {

@Override
    public Integer call() throws Exception {
        Thread.sleep(10000);
        return 1;
    }

}

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class TestFuture {
   
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        FutureTask<Integer> future=new FutureTask<Integer>(new MyJob());
       
        new Thread(future).start();
       
        System.out.println("-----ok--------");
       
       Integer i=future.get();
       
        System.out.println(i);
    }

}

FutureTask实现了Future和Runable接口,FutureTask 开始后,future 执行的时间较长,引起可以处理其他的事情,等其他事情处理好后,在通过future.get()获取结果,如果

call方法还未完成,则此时线程会阻塞等待。

转载于:https://www.cnblogs.com/yg_zhang/p/4217450.html

Future 模式介绍相关推荐

  1. Future模式介绍

    普通模式与Future模式的简单对比: 1. 普通模式在处理多任务时是串行的,在遇到耗时操作的时候只能等待,直到阻塞被解除,才会继续执行下一个任务 2. Future模式,只是发起了耗时操作,函数立马 ...

  2. 多线程基础之设计模式Future模式

    一. Future模式介绍 前面的 Thread-Per-Message 模式将耗时时间的处理交给其他线程, 的确可以提高程序的响应性, 但是在将处理交出去的时候, 处理结果仍是未知的, 而等待处理结 ...

  3. Java是如何实现Future模式的?万字详解!

    1 Future是什么? 先举个例子,我们平时网购买东西,下单后会生成一个订单号,然后商家会根据这个订单号发货,发货后又有一个快递单号,然后快递公司就会根据这个快递单号将网购东西快递给我们.在这一过程 ...

  4. 【并发编程】Future模式及JDK中的实现

    本文讲解Java中Future模式的使用,文章也发布在了公号(点击查看),欢迎交流. 1.1.Future模式是什么 先简单举个例子介绍,当我们平时写一个函数,函数里的语句一行行同步执行,如果某一行执 ...

  5. Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)...

    1. Future接口简介 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API ...

  6. java future接口_java Future 接口介绍

    在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API的一部分,在java.uti ...

  7. Future 接口介绍

    2019独角兽企业重金招聘Python工程师标准>>> Future模式可以这样来描述:我有一个任务,提交给了Future,Future替我完成这个任务.期间我自己可以去做任何想做的 ...

  8. Java Future接口、Future模式理解

    原文地址:https://blog.csdn.net/devinteng/article/details/23455733 Future接口介绍: 在Java中,如果需要设定代码执行的最长时间,即超时 ...

  9. JAVA 拾遗 --Future 模式与 Promise 模式

    JAVA 拾遗 --Future 模式与 Promise 模式 写这篇文章的动机,是缘起于微信闲聊群的一场讨论,粗略整理下,主要涉及了以下几个具体的问题: 同步,异步,阻塞,非阻塞的关联及区别. JA ...

最新文章

  1. 解决ASP网页乱码的问题
  2. 阿里云 ESSD 采用自研新一代存储网络协议,打造“超级高速”
  3. 图形化c语言编程,「分享」C语言如何编写图形界面
  4. MyBatis的接口式编程Demo
  5. Java电话号码滚动抽奖_js手机号码批量滚动抽奖代码实现
  6. Eigen删除矩阵的某行或某列
  7. Linux学习笔记6 - 用户和组群账户管理
  8. 福利来了,axure8.1注册码
  9. 遗传算法java(中国外运杯)
  10. php直接拨号代码,c#自动ADSL拨号代码
  11. web前端响应式设计总结
  12. Ubuntu如何把主文件夹的中文设置成英文
  13. Elasticsearch生命周期ILM若干时间后自动删除索引index
  14. 5.1.2全景声音箱摆位_客厅影院选择7.1还是5.1.2全景声合适,天空音箱点位怎么定...
  15. delphi Treeview用法
  16. IDEA: 自动优化导包 Auto Import
  17. macbook12寸开发java_我买的MacBook 12寸的。我就是嘚瑟一下。
  18. 1024程序员节,给猿媛们的超值当当网购书薅羊毛
  19. 团贷网面试php,团贷网的钱还能要回来吗?
  20. Python用雷达图展示某学生成绩问题/2020年12月

热门文章

  1. spring jpa mysql集群_Spring Boot系列之十四 JPA 连接mycat
  2. SpringBoot-400-Bad-Request(Request-header-is-too-large)
  3. 单片机中SDZ是什么意思_合泰单片机ADC转换程序
  4. 【Netty】从 BIO、NIO 聊到 Netty
  5. mysql 大事务 binlog_执行大事务时出现binlog解析失败
  6. Windows10为什么自带Linux,一直没有发现原来 Win10 内置了一个 Linux
  7. SaltStack自动化运维(一)——简介与架构解析
  8. java 并行多线程素数,多线程求求1000万内的质数数量
  9. java使用ireport生成报表_JasperReport(3)——Java简单使用IReport生成的文件建立报表...
  10. centos php 开启libgdgd_Linux下开启PHP GD库支持