多线程之Callable与Future的介绍

本文深入探讨了Java中的Callable与Future类,详细解释了Callable接口与Runnable的区别,着重介绍了Future对象如何用于异步计算,包括Future的call方法、Future对象的cancel和get方法的使用,以及Future模式的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 CallableFuture 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。

Callable的接口定义如下;

public interface Callable<V> {

V call() throws Exception;

}

Callable和Runnable的区别如下:

I Callable定义的方法是call,而Runnable定义的方法是run。

II Callable的call方法可以有返回值,而Runnable的run方法不能有返回值。

III Callable的call方法可抛出异常,而Runnable的run方法不能抛出异常。

Future 介绍

Future表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。Future的cancel方法可以取消任务的执行,它有一布尔参数,参数为 true 表示立即中断任务的执行,参数为 false 表示允许正在运行的任务运行完成。Future的 get 方法等待计算完成,获取计算结果

 

java.util.concurrent.Callable与java.util.concurrent.Future类可以协助您完成Future模式。Future模式在请求发生时,会先产生一个Future对象给发出请求的客户。它的作用类似于代理(Proxy)对象,而同时所代理的真正目标对象的生成是由一个新的线程持续进行。真正的目标对象生成之后,将之设置到Future之中,而当客户端真正需要目标对象时,目标对象也已经准备好,可以让客户提取使用。

 

关于Future模式的说明,可以参考:http://caterpillar.onlyfun.net/Gossip/DesignPattern/FuturePattern.htm

转载:http://www.cnblogs.com/whgw/archive/2011/09/28/2194760.html

http://www.blogjava.net/freeman1984/archive/2009/11/02/300718.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值