Discussion
注:内容参考Scala CookBook
在前面的博客中了解到使用future是一个很方便直接的办法,但也有许多的概念需要我们了解。
A future and ExecutionContext
下面的内容描述了future的基本概念
1. Future[T]是一个可以并发计算的容器(Container)可以返回T类型的result或者是异常Exception
2. 当future被创造出来,future中的算法开始执行的时间是不确定的,并分配线程给它执行
3. 一旦future完成,计算结果就变得可用
4. 当future返回一个结果,future就被称作completed。有三种情况(successfully,completed,failed)
5. future提供了接口用来读取future计算的值。这包括callback(onComplete / onSuccess / onFailure)
其他:for comprehension,map,flatMap,etc
6. ExectutionContext执行给定的任务。可以把ExecutionContext看做是Thread pool
7. ExecutionContext.Implicits.global -> default global execution context
Callback methods
下面的内容描述了future和callback method的使用
1. 当future complete,callback method异步执行
2. callback method : onComplete / onSuccess / onFailure
3.callback method 是由线程执行。
4. 哪个callback执行的顺序不能保证
5. onSuccess和onFailure采取部分函数,你仅仅需要处理想要的case
Combinators
在很多情况下,callback method能够满足我们的要求。但是如果你需要用并行的方式实现多次计算,并将计算的结果进行汇聚,使用Combinators是一个不错的选择。
常用的combinator:map,foreach,for comprehension等方法。