生活生产服务其它并发编程

runnable 和 callable?

说一下 runnable 和 callable 有什么区别?

参与22

4同行回答

nkj827nkj827项目经理长春长信华天
Runnable和Callable的区别相同点1、两者都可用来编写多线程程序;2、两者都需要调用Thread.start()启动线程;不同点1、两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;2、Callable接口的call()方法允许抛出异常;而Runn...显示全部

Runnable和Callable的区别
相同点
1、两者都可用来编写多线程程序;
2、两者都需要调用Thread.start()启动线程;
不同点
1、两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;
2、Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;

收起
系统集成 · 2020-04-30
浏览911
zhuqibszhuqibs软件开发工程师Adidas
Runnable1.Runnable接口是一个功能接口,并且具有单一的run()不接受任何参数,并且不返回任何值的方法。2.这适用于我们不查找线程执行结果的情况,例如,传入事件日志记录由于方法签名没有指定“throws”子句, 因此无法传播进一步异常的检查Callable1.Callable接口是包含单一的通用...显示全部

Runnable
1.Runnable接口是一个功能接口,并且具有单一的run()不接受任何参数,并且不返回任何值的方法。
2.这适用于我们不查找线程执行结果的情况,例如,传入事件日志记录
由于方法签名没有指定“throws”子句, 因此无法传播进一步异常的检查

Callable
1.Callable接口是包含单一的通用call()调用方法-它返回一个通用值V
2.Callable的call()方法包含“throws Exception”子句,因此我们可以轻松地进一步传播已检查的异常

收起
互联网服务 · 2020-04-30
浏览953
youki2008youki2008系统架构师DDT
相同点都是接口都可以编写多线程程序都采用Thread.start()启动线程主要区别Runnable 接口 run 方法无返回值;Callable 接口 call 方法有返回值,是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callabl...显示全部

相同点
都是接口
都可以编写多线程程序
都采用Thread.start()启动线程

主要区别
Runnable 接口 run 方法无返回值;Callable 接口 call 方法有返回值,是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果

Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call 方法允许抛出异常,可以获取异常信息

注:Callalbe接口支持返回执行结果,需要调用FutureTask.get()得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞。

收起
互联网服务 · 2020-04-30
浏览902
wfang_2020 邀答
zftangzftang其它小白一枚
都属于接口 Callable可以返回一个类型V , callable 不可以Callable能够抛出checked exception,而Runnable不可以。显示全部

都属于接口
Callable可以返回一个类型V , callable 不可以
Callable能够抛出checked exception,而Runnable不可以。

收起
互联网服务 · 2020-04-30
浏览887

提问者

wfang_2020
测试工程师DSL
擅长领域: 系统运维云计算容器

相关问题

问题状态

  • 发布时间:2020-04-30
  • 关注会员:5 人
  • 问题浏览:1845
  • 最近回答:2020-04-30
  • X社区推广