Java多线程Callable接口
Callable和Future出现的原因
创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。
这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。
如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。
而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。
Callable和Future介绍
Callable接口代表一段可以调用并返回结果的代码;Future接口表示异步任务,是还没有完成的任务给出的未来结果。所以说Callable用于产生结果,Future用于获取结果。
Callable接口使用泛型去定义它的返回类型。Executors类提供了一些有用的方法在线程池中执行Callable内的任务。由于Callable任务是并行的(并行就是整体看上去是并行的,其实在某个时间点只有一个线程在执行),我们必须等待它返回的结果。
java.util.concurrent.Future对象为我们解决了这个问题。在线程池提交Callable任务后返回了一个Future对象,使用它可以知道Callable任务的状态和得到Callable返回的执行结果。Future提供了get()方法让我们可以等待Callable结束并获取它的执行结果。
Callable与Runnable
java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法:
public interface Runnable {public abstract void run();
}
由于run()方法返回值为void类型
Java多线程Callable接口相关推荐
- Java多线程 - Runnable接口和Callable接口的区别
文章目录 1. Runnable接口实例 2. Callable接口原理 3. Callnable接口实例 4. FutureTask是什么? 5. 线程池中 submit() 和 execute() ...
- java的Callable接口
java也算是原生的支持多线程吧,但是如何让线程执行完成之后能够有返回值返回到主线程呢...? 一般情况下线程是实现runable接口,但是如果想要返回值的话那么就应该实现Callable接口了... ...
- Java多线程-Callable和Future
Callable和Future出现的原因 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需 ...
- 实现多线程Callable接口
Callable接口,实现多线程 1.实现 Callable接口,相较于实现 Runnable 接口的方式,优点是:方法可以有返回值,并且可以抛出异常 2.需要 FutureTask实现类的支持, ...
- 多线程-Callable接口
通过实现Callable接口实现多线程. 环境:IntelliJ IDEA.JDK1.8 步骤 自定义类,实现Callable接口,需要返回值(call方法) 实现call()方法,编写线程执行体(可 ...
- 【Java】Callable 接口
多线程中最常用的是Runnable接口,定义了一次任务执行的内容.但是Runnable接口无法得到返回值,而且也无法让执行端捕获到异常.所以就有了Callable接口. public interfac ...
- Java用Callable接口创建线程
一.概述 使用Callable接口创建线程能够返回数据.与Runnable接口创建线程的方式有点类似,也是需要通过Thread类来创建线程.由于Thread类的构造函数中没有Callable接口, ...
- 从源码角度详解Java的Callable接口
摘要:本文从源码角度深入解析Callable接口. 本文分享自华为云社区<深入解析Callable接口>,作者: 冰 河 . 本文纯干货,从源码角度深入解析Callable接口,希望大家踏 ...
- Java多线程实现接口调用
前言 有一张客户信息表,数据量很大.需要把这些记录调用某个接口(这个接口一次只能查询10个客户信息),然后把接口返回信息解析保存到另一个表里. 客户信息表(cust_info)如下: id cust_ ...
最新文章
- Linux Supervisor的安装与使用入门
- 表单向导 css实现 步骤指引器
- oracle误删数据的解决方法
- android actionbar 背景,Android应用开发之定制页面背景及Actionbar overflow menu的背景色...
- 2020年周数和日期对应表_2020年雅思考试报名截止日期、准考证打印日期和成绩单寄送日期...
- rubymine 保存成unix格式_如何免费在线试用 200+ Linux 和 Unix 发行版?
- 都啥年代了,求你别再说Redis是单线程了!
- [Python] Marshmallow QuickStart
- k8s极简史:K8s多集群技术发展的历史、现状与未来
- MySQL高级-SQL优化
- java 线程_理解java多线程
- 【转】:localStorage使用总结
- Linux编译工具:gcc入门
- 联想笔记本prtsc不能截图_联想笔记本电脑如何截屏,你值得一看的技巧
- Word排版技巧分享
- Android 使用百度飞桨做OCR的本地识别
- Symbian OS应用编程图形篇之架构
- es - elasticsearch - aggs - pipeline - moving_avg
- oracle 表的er图,用PowerDesingner把oracle中的表导成er图
- 关于数列极限的两个定理