文档章节

Future可以拿到异步执行任务的返回值

浮躁的码农
 浮躁的码农
发布于 2017/01/20 10:38
字数 261
阅读 35
收藏 0
/**
 * Future可以拿到异步执行任务的返回值,FutureTask实现了两个接口,Runnable和Future,所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值,
 * 那么这个组合的使用有什么好处呢?假设有一个很耗时的返回值需要计算,并且这个返回值不是立刻需要的话,那么就可以使用这个组合,用另一个线程去计算返回值,而当前线程在使用这个返
 * 回值之前可以做其它的操作,等到需要这个返回值时,再通过Future得到,岂不美哉!
 * 这里有一个Future模式的介绍:http://openhome.cc/Gossip/DesignPattern/FuturePattern.htm。 
 * @author weiwei
 *
 */
public class CallableAndFuture {
	public static void main(String[] args) {
        Callable<Integer> callable = new Callable<Integer>() {
            public Integer call() throws Exception {
                return new Random().nextInt(100);
            }
        };
        FutureTask<Integer> future = new FutureTask<Integer>(callable);
        new Thread(future).start();
        
        try {
            for(int i=0;i<5;i++){
            	Thread.sleep(1000);// 可能做一些事情
            	System.out.println(future.get());
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

 

© 著作权归作者所有

上一篇: linux之sort用法
下一篇: Docker的主要作用
浮躁的码农

浮躁的码农

粉丝 76
博文 917
码字总数 181252
作品 0
松江
程序员
私信 提问
Callable与Future

接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果...

colorlesswind
2015/12/24
65
0
Java多线程之Callable和Future

本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常...

Java团长
2018/01/31
36
0
java Callable与Future

Future模式 Future接口是Java线程Future模式的实现,可以来进行异步计算。 Future模式可以这样来描述: 我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做...

双月通天
2016/11/01
38
0
java.util.concurrent包(4)——Callable和Future

Callable和Future,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,...

woshixuye111
2014/06/22
0
0
【小家Java】Future与FutureTask的区别与联系

【小家java】java5新特性(简述十大新特性) 重要一跃 【小家java】java6新特性(简述十大新特性) 鸡肋升级 【小家java】java7新特性(简述八大新特性) 不温不火 【小家java】java8新特性(...

onedotdot
02/24
27
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 安装 mysql5.7 版本(全)

centos 安装 版本说明 :centos7,mysql5.7 ,不是 centos7 可能有些命令不兼容 安装 mysql-server # 下载并安装 mysql yum wget -i -c http://dev.mysql.com/get/mysql57-community-relea......

sanri1993
30分钟前
4
0
Spring3.x升级到Spring4.x-5.x时关于MappingJacksonHttpMessageConverter的报错问题

在Spring4.x或者以上的版本强使用(不然会报错): org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 如果是Spring4.0获者以下的版本可以使用MappingJacksonH...

code-ortaerc
33分钟前
3
0
OSG 渲染状态污染到其它节点怎么解决?

在根节点补上初始状态

洛克人杰洛
35分钟前
4
0
grid 布局 设置行列间距

本文转载于:专业的前端网站➪grid 布局 设置行列间距 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt......

前端老手
47分钟前
3
0
spring-data-elasticsearch 和 Jackson 配合使用的bug

下面先简单描述项目。 项目依赖: dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.1.0.RELEASE'......

Landas
48分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部