Akka / Scala Future背后的理念是,每当我们找到阻塞的代码段(例如IO调用,网络调用等)时,我们都必须将其包装在一个Future中,并在某个时间点之后异步获取结果。但是,之前阻塞主线程的阻塞代码块现在阻塞了Future支持的单独线程。那Akka / Scala Future买了什么。
val blockingCallResult: Result = block() //blocks the thread of execution.
now let's use Akka/Scala future and wrap the blocking call with Future
val future = Future[Result] {
val blockingCallResult: Result = block() //also blocks on some thread in thread pool
blockingCallResult
}
Run Code Online (Sandbox Code Playgroud)
我们如何通过利用未来而受益。
如果只有一个执行上下文,并且仅使用执行阻塞代码的期货,并且一次仅执行一个,那么使用期货确实没有任何优势。期货的优点是:
| 归档时间: |
|
| 查看次数: |
824 次 |
| 最近记录: |