标签:空闲 fun 并且 直接 call ted 完成 exe 频繁
在我们对 Scala 的使用过程之中.我们会频繁的用到一类方法,称为异步方法.
在 Scala 中也是我们最熟悉的 scala.concurrent.Future.不了解相关内容的可以去看 Future 相关的博客.
通过对 Future 方法的调用,我们可以特别优雅的方式实现异步的调用.也就是类似多线程的使用.
在 Java 中,代码大部分都是同步执行的.简单的来说,就是做一顿饭我先刷锅,再淘米.等米饭做熟了再去洗碗洗菜炒菜盛饭盛菜摆桌吃饭.
有了异步方法,我们就可以做到先刷锅刷碗,在淘米做饭的空闲功夫去洗菜炒菜做饭.大大节省我们的程序的运行效率.
FutureTask是Future接口的一个实现类,它是从 Java 1.5 开始引入的.通过它能够控制它的执行方法的行为.其具体的内容是通过 Callable接口来实现的.
FutureTask有7个状态,其中数值从小到大:NEWCOMPLETINGNORMALEXCEPTIONALCANCELLEDINTERRUPTINGINTERRUPTED
其中,状态有几个可能的流转方式:
- 新建 -> 完成中 -> 普通
- 新建 -> 完成中 -> 异常
- 新建 -> 取消
- 新建 -> 打断中 -> 打断
FutureTask有许多方法,包括:
isCancelled方法 : 返回是否取消(当状态是后面三种情况时)isDone方法 : 返回是否处理(当状态不是新建时)cancel方法 : 试图取消方法(状态可能变成取消或者被打断)get方法 : 获取到方法的返回值,如果传入了时间并且超时的话会抛出异常
FutureTask的构造器传入一个 Callable 对象,它和 Runnable 的主要区别是:
Callable |
Runnable |
|---|---|
实现 call 方法 |
实现 run 方法 |
| 可获得返回结果 | 不能直接获得结果 |
| 可以抛出异常 | 不能抛出异常 |
接下来我们直接看代码实现;
首先我有五个获取对应的信息的方法getGeneral.
|
|
下面是getGeneral的代码:
|
|
这样就完成了我们的五组异步调用.
异步方面我暂且也学到这里,将来有机会继续更新有关异步的内容.
标签:空闲 fun 并且 直接 call ted 完成 exe 频繁
原文地址:https://www.cnblogs.com/petewell/p/11615063.html