Java中的Future
1.Future解决了什么问题
Future是java中的一个接口,主要用于java多线程计算过程的异步结果获取,能够感知计算的进度,与传统的多线程实现方式,比如继承Thread类,实现runnable接口,它们主要的局限在于对多线程运行的本身缺少监督。
2.Callable接口和Runnable接口区别
下面是它们之间的主要区别:
- runable接口是用run方法作为线程运行任务的入口,callable接口使用call方法
- 运行Callable任务可拿到一个Future对象, Future表示异步计算的结果
- callable的实现类FutureTask提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。
FutureTask类:包装callable接口,并同时实现了Runable接口和Future接口,实现Runnable接口是为了满足多线程并发执行的目的,实现Future接口则是为了满足多线程并发过程中新线程不可控问题。
FutureTask的构造方法:
public FutureTask(Callable<V> callable) {
if (callable == null)
throw new NullPointerException();
this.callable = callable;
this.state = NEW; // ensure visibility of callable
}
NEW代表异步计算还没开始,
COMPLETING 代表计算正在进行中
NORMAL 代表计算正常结束
EXCEPTIONAL 代表计算过程中出现了异常
CANCELLED 代表计算任务被取消
INTERRUPTING 代表计算任务正在被中断执行
INTERRUPTED 代表计算任务已经被中断执行
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-08-20 Stream
2021-08-20 Async