深度解析:多线程Future

本文介绍了Future设计模式,其核心是在调用耗时方法时返回Future以监控和控制计算过程,还介绍了其核心方法。同时阐述了FutureTask作为Future的实现类,实现了RannableFuture接口,有两个构造方法,内部有重要的state变量及核心的get和set方法。

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

Future其实是一种设计模式,它的核心思想假如有一个方法f,它的计算过程是相当耗时的,显然直接获取结果是不明智的,因为需要等待它计算完才能返回。所以可以在调用方法f的时候让它返回一个Future,通过这个Future可以监控和控制方法f的计算过程。它有几个核心方法:

get():获取返回值结果。

cancel():取消方法的执行过程。

isDown():判断方法是否执行完成。

isCancelled():判断方法是否已经被取消执行。

FutureTask就是Future的实现类,FutureTask实现了RannableFuture接口,而RannableFuture接口继承了Rannable接口和Future接口。它有两个构造方法,一个是传入一个Callable(就是带返回值的线程任务),另一个是传入一个Rannable和一个result,它内部会将它们转化成一个Callable。这也就说明了其实在代码的层次上Callable可以看作是由一个Rannable和一个返回值构成的。因为FutureTask实现了Runnable接口,所以可以直接将FutureTask作为参数传给Thread来开启线程。在FutureTask中,有一个重要的state变量,它有七种状态,取值0~6,还有两个核心方法是get和set。set方法就是设置返回值给一个内部变量outcome,并修改state状态的值。get方法就是返回outcome储存的结果,首先它会判断state的状态是否是正常完成状态,如果是就返回结果,如果state处于未完成状态,就让当前线程处于阻塞状态,等待唤醒。如果state状态为异常或者中断,就抛出异常信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值