有的时候,我们可能需要让一步执行的线程在执行完成以后,提供一个返回值给到当前的主线程,主线程需要依赖这个值进行后续的逻辑处理,那么这个时候,就需要用到带返回值的线程了。Java中提供了这样的实现方式

public class CallableDemo implements Callable<String> { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService= Executors.newFixedThreadPool(1); CallableDemo callableDemo=new CallableDemo(); Future<String> future=executorService.submit(callableDemo); System.out.println(future.get()); executorService.shutdown(); } @Override public String call() throws Exception { int a=1; int b=2; System.out.println(a+b); return "执行结果:"+(a+b); }
}

实现Callable接口通过FutureTask包装器来创建Thread线程相关推荐

  1. 简单理解Callable接口

    Callable接口: Callable,新启线程的一种方式,返回结果并且可能抛出异常的任务,在前面的新启线程的文章中用过,但是没有具体讲解 优点: 可以获取线程的执行结果,也称为返回值 通过与Fut ...

  2. Java用Callable接口创建线程

     一.概述  使用Callable接口创建线程能够返回数据.与Runnable接口创建线程的方式有点类似,也是需要通过Thread类来创建线程.由于Thread类的构造函数中没有Callable接口, ...

  3. Callable 接口

    Callable 接口 是 java.util.concurrent.下的一个泛型接口 , 只有一个call () 方法 , 它是有返回值的 ,  我们可以获取多线程执行的结果 , 使用 Callab ...

  4. 九、Callable接口的使用

    callable接口 Callable接口类似于Runnable接口,它的实例对象也可能被一个线程执行. 区别于Runnable接口,Callable接口的实现类可以返回结果,并且能够抛出异常. 线程 ...

  5. 实现Callable接口创建多线程

    新增方式一:实现Callable接口 与Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获 ...

  6. Swift Property Wrapper 属性包装器

    @propertyWrapper属性包装器:在定义存储属性时添加一个分离层,代表该属性被包装起来,且在包装器内部可以做一些事情.把一些通用复用的代码放在了包装器中,比如线程安全检查或者数据存储到数据库 ...

  7. 《Java 核心技术卷1 第10版》学习笔记------ 对象包装器、自动装箱、拆箱

    有时, 需要将 int 这样的基本类型转换为对象. 所有的基本类型都冇一个与之对应的类.例如,Integer 类对应基本类型 int.通常, 这些类称为包装器 ( wrapper ) 这些对象包装器类 ...

  8. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )

    文章目录 一.Future 接口 1.Future 接口简介 2.取消任务方法 3.Future 接口源码注释 二.Callable 接口 三.Runnable 接口 上一篇博客 [Android 异 ...

  9. 认识Callable接口

    认识Callable接口 Runnable接口和Callable接口的不同 callable接口,1.可以有返回值,2.可以抛出异常,3.调用方法不同, Runnable接口不可以 实现Callabl ...

最新文章

  1. 原生ajax+php上传图片的简单实现
  2. kdj买卖指标公式源码_“点金主图+副图+KDJ排序指标”公式源码
  3. 《java编程思想》读后笔记:二,吸血鬼数字
  4. <DependencyManagement>记录
  5. iOS之深入解析Cocoapods的工作原理与源码分析
  6. 网络对抗作业——程瑀
  7. 【动态规划】石子合并 (ssl 2863)
  8. 毕昇 JDK:为啥是ARM 上超好用的 JDK
  9. 位运算(异或运算) :数组中数字出现的次数
  10. mysql如何给一个数据库所有表都增加一个字段?
  11. robocopy 备份_robocopy的用法,数据库局域网备份
  12. tomcat优化笔记
  13. canvas特效收集
  14. 窗函数的介绍以及画出常见窗函数(汉宁窗,矩形窗,汉明窗,布莱克曼窗)的时域图和频谱图
  15. 实现html文件和c# 交互
  16. 主流编程语言的介绍及特点
  17. 动画:二叉树有几种存储方式?(上)
  18. react使用@tweenjs/tween.js实现数字动态增长
  19. 浅谈如何使用Google reCAPTCHA进行人机验证
  20. 从Mac远程控制Windows

热门文章

  1. 数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长
  2. IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository
  3. servlet web.xml学习笔记
  4. HYSBZ/BZOJ 1038 [ZJOI2008] 瞭望塔 - 计算几何
  5. Silverlight学习笔记(三):创建第一个Silverlight应用程序
  6. javascript 基础下
  7. 再谈 Java中Runnable和Thread的区别
  8. Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
  9. 作为大龄开发人员,敢问路在何方?
  10. 10 过滤器和监听器