Java中的Future

1.Future解决了什么问题

Future是java中的一个接口,主要用于java多线程计算过程的异步结果获取,能够感知计算的进度,与传统的多线程实现方式,比如继承Thread类,实现runnable接口,它们主要的局限在于对多线程运行的本身缺少监督。

2.Callable接口和Runnable接口区别

下面是它们之间的主要区别:

  1. runable接口是用run方法作为线程运行任务的入口,callable接口使用call方法
  2. 运行Callable任务可拿到一个Future对象, Future表示异步计算的结果
  3. 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 代表计算任务已经被中断执行

posted @   KLAPT  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2021-08-20 Stream
2021-08-20 Async
点击右上角即可分享
微信分享提示