Callable接口介绍 Runnable和Callable的区别

网友投稿 277 2022-11-15

Callable接口介绍 Runnable和Callable的区别

Callable接口:

Callable,新启线程的一种方式,返回结果并且可能抛出异常的任务,在前面的新启线程的文章中用过,但是没有具体讲解

优点:

可以获取线程的执行结果,也称为返回值

通过与Future的结合,可以实现利用Future来跟踪异步计算的结果

Runnable和Callable的区别:

Callable规定的方法是call(),Runnable规定的接口是run();

Callable的任务执行后可返回值,而Runnable的任务是不能有返回值的;

call方法可以抛出异常,run方法不可以

运行Callable任务可以拿到一个Future对象,表示异步计算的结果,它提供了检查是否计算完成的方法,以等待计算的完成,并检索计算的结果,通过Future对象可以了解任务执行情况,可以取消任务的执行,还可以获取执行结果

Future接口:

Future是一个接口,代表了一个异步计算的结果,接口中的方法用来检查计算是否完成,等待完成和得到计算结果;

当计算完成后,只能通过get()方法得到结果,get()方法会阻塞,一直到线程的计算结果完成并返回;

一旦计算完成了,那么这个计算就不能被取消

FutureTask类:

FutureTask类实现了RunnableFuture接口,而RunnableFuture接口是继承了Runnable和Future接口,所以说FutureTask是一个提供异步计算结果的任务;

FutureTask可以用来包装Callable或者Runnable接口的实现对象,因为FutureTask实现了Runnable接口,所以FutureTask也可以提交给线程池

Callable,Future,FutureTask三者之间的关系:

Callable的两种执行方式:

2:借助线程池来执行

线程池这个只粘贴关键代码,线程池的知识就不在这多说了,之后会具体讲解

返回的Future接口的使用和FutureTask是一样的

这个接口实现的线程,是有返回值的

可以说一下我之前用到的场景

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Java EE (Struts2 + Spring + Hibernate)开发】 :Hibernate(二)之【关联映射|继承映射|批量处理】
下一篇:springboot打成jar后无法读取根路径和文件的解决
相关文章

 发表评论

暂时没有评论,来抢沙发吧~