我们在多线程中很多时候会需要获得线程的返回值,但是多线程又不像普通方法一样,可以直接获得返回值,那么我们应该怎么获得返回值呢?

一、使用Future获得Callable的返回值

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;public class TestFuture {public static void main(String[] args) throws Exception {ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();Future<String> submit = newCachedThreadPool.submit(new TaskCallable());System.out.println("1.主线程开始");String result = submit.get();System.out.println("2.result:" + result);}
}class TaskCallable implements Callable<String> {@Overridepublic String call() throws Exception {System.out.println("3.正在执行任务,需要等待五秒时间,执行任务开始");Thread.sleep(5000);System.out.println("4.正在执行任务,需要等待五秒时间,执行任务结束");return "黄浩轩";}
}

执行结果如下:

java多线程-使用Future获得多线程的返回值相关推荐

  1. Java程序员必会!没有返回值的构造函数是怎么完成赋值的?

    众所周知,在Java里是不能给构造函数写返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法.可是如果构造函数没有返回值,那么比如Test t = new ...

  2. 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))

    学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...

  3. C#多线程函数如何传参数和返回值

    提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托就是 具有 同样参数和返回值 的函数的集合. 比如 public delegate void MyDelegate(int a ...

  4. Java中Map里put方法的返回值

    在java中,Map里的put方法,如果key值不存在,则返回值是null,但是key值如果存在,则会返回原先被替换掉的value值.(当然,map中的key和value都允许是null). Map ...

  5. 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用枚举?

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下: 在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内 ...

  6. java——接口作为方法的参数和返回值

    接口作为方法的参数和返回值 package cn.itcast.day11.demo07;import java.util.ArrayList; import java.util.List; /* j ...

  7. Java学习Day06——函数,参数,返回值,分类,多级调用

    JavaSE基础 多听一遍不如多练一遍,多练一遍不如总结一遍,希望各位在学习的过程中,要多听,多写,多练,每天将自己所学汇总一遍,查缺补漏,成就更好的自己 一.函数 1.1概述 函数又叫方法,是完成指 ...

  8. java方法的重载与覆盖的返回值类型

    public class A extends B{//下面的是方法的覆盖(重写overRiding)public void riding(){System.out.println("this ...

  9. java实现fread_C中fread()函数的返回值

    这个问题很容易搞错,并导致很多问题,需要强调的是fread函数返回的并不是字节数. realRead = fread(buf,item,count,fp)    (每次读item大小的数据块,分cou ...

最新文章

  1. Docker 上传镜像amp;拉取镜像
  2. 四种依恋类型_依恋类型的四种模式影响着我们的亲密关系
  3. 有意思的前端函数面试题
  4. activemq启动异常
  5. 图解CSS3----5-否定伪类选择器
  6. go 分段锁ConcurrentMap,map+读写锁,sync.map的效率测试
  7. mysql 字符列做日期分区_mysql 根据日期字段做表分区
  8. 中国“新基建”7大产业链全景图!(附500家企业超全名单!)
  9. centos7默认字体_CentOS7终端的分辨率和字体修改
  10. 23. 生成 core dump
  11. Atitit.java jna 调用c++ dll 的总结
  12. 《MySQL必知必会》学习笔记——第三章(了解数据库和表)
  13. JBOSS的下载安装、环境变量配置以及部署
  14. 独孤求败剑学考证 zz
  15. 脚手架开发(1)-准备阶段
  16. Makefile wildcard
  17. EasyX的安装与使用
  18. liteos源码中的哨兵函数思想
  19. 数学建模:种群竞争模型
  20. Linux系统下自动搜索USB摄像头地址及设备信息

热门文章

  1. IDEA第一次创建android太慢,idea新建maven项目时速度缓慢的解决方法
  2. 手机计算机怎么打错误,极客修:手机计算器集体出错!输入这2个数字,我傻了...
  3. Android面试题整理,一个三非渣本的Android校招秋招之路,附超全教程文档
  4. greys线上调试代码
  5. MapReduce 编程实战
  6. c语言将数组初始化为1_C语言中数组的初始化
  7. 计算机爱好者协会招生ppt,电脑爱好者协会系列讲座讲述.ppt
  8. 终于解决了悬疑好多年的低版本CAD VBA不能在高版本CAD使用的问题
  9. 生活中的定律之刺猬理念
  10. CentOS发行版号和RHEL版本对照表