实现Callable接口通过FutureTask包装器来创建Thread线程
有的时候,我们可能需要让一步执行的线程在执行完成以后,提供一个返回值给到当前的主线程,主线程需要依赖这个值进行后续的逻辑处理,那么这个时候,就需要用到带返回值的线程了。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线程相关推荐
- 简单理解Callable接口
Callable接口: Callable,新启线程的一种方式,返回结果并且可能抛出异常的任务,在前面的新启线程的文章中用过,但是没有具体讲解 优点: 可以获取线程的执行结果,也称为返回值 通过与Fut ...
- Java用Callable接口创建线程
一.概述 使用Callable接口创建线程能够返回数据.与Runnable接口创建线程的方式有点类似,也是需要通过Thread类来创建线程.由于Thread类的构造函数中没有Callable接口, ...
- Callable 接口
Callable 接口 是 java.util.concurrent.下的一个泛型接口 , 只有一个call () 方法 , 它是有返回值的 , 我们可以获取多线程执行的结果 , 使用 Callab ...
- 九、Callable接口的使用
callable接口 Callable接口类似于Runnable接口,它的实例对象也可能被一个线程执行. 区别于Runnable接口,Callable接口的实现类可以返回结果,并且能够抛出异常. 线程 ...
- 实现Callable接口创建多线程
新增方式一:实现Callable接口 与Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获 ...
- Swift Property Wrapper 属性包装器
@propertyWrapper属性包装器:在定义存储属性时添加一个分离层,代表该属性被包装起来,且在包装器内部可以做一些事情.把一些通用复用的代码放在了包装器中,比如线程安全检查或者数据存储到数据库 ...
- 《Java 核心技术卷1 第10版》学习笔记------ 对象包装器、自动装箱、拆箱
有时, 需要将 int 这样的基本类型转换为对象. 所有的基本类型都冇一个与之对应的类.例如,Integer 类对应基本类型 int.通常, 这些类称为包装器 ( wrapper ) 这些对象包装器类 ...
- 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )
文章目录 一.Future 接口 1.Future 接口简介 2.取消任务方法 3.Future 接口源码注释 二.Callable 接口 三.Runnable 接口 上一篇博客 [Android 异 ...
- 认识Callable接口
认识Callable接口 Runnable接口和Callable接口的不同 callable接口,1.可以有返回值,2.可以抛出异常,3.调用方法不同, Runnable接口不可以 实现Callabl ...
最新文章
- 原生ajax+php上传图片的简单实现
- kdj买卖指标公式源码_“点金主图+副图+KDJ排序指标”公式源码
- 《java编程思想》读后笔记:二,吸血鬼数字
- <DependencyManagement>记录
- iOS之深入解析Cocoapods的工作原理与源码分析
- 网络对抗作业——程瑀
- 【动态规划】石子合并 (ssl 2863)
- 毕昇 JDK:为啥是ARM 上超好用的 JDK
- 位运算(异或运算) :数组中数字出现的次数
- mysql如何给一个数据库所有表都增加一个字段?
- robocopy 备份_robocopy的用法,数据库局域网备份
- tomcat优化笔记
- canvas特效收集
- 窗函数的介绍以及画出常见窗函数(汉宁窗,矩形窗,汉明窗,布莱克曼窗)的时域图和频谱图
- 实现html文件和c# 交互
- 主流编程语言的介绍及特点
- 动画:二叉树有几种存储方式?(上)
- react使用@tweenjs/tween.js实现数字动态增长
- 浅谈如何使用Google reCAPTCHA进行人机验证
- 从Mac远程控制Windows
热门文章
- 数据结构-编程实现一个双链表的建立,双链表的打印,双链表的测长
- IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository
- servlet web.xml学习笔记
- HYSBZ/BZOJ 1038 [ZJOI2008] 瞭望塔 - 计算几何
- Silverlight学习笔记(三):创建第一个Silverlight应用程序
- javascript 基础下
- 再谈 Java中Runnable和Thread的区别
- Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
- 作为大龄开发人员,敢问路在何方?
- 10 过滤器和监听器