Scala Future 上的等待会阻塞线程吗?
当我等待 Scala Future 的结果时,它的行为是否更像接收,或者像反应,即它是否阻塞线程或调度如果有结果,是否继续?
When I wait for result of Scala Future, does it behave more like receive, or like react, i.e. does it block a thread, or schedules a continuation after result if available?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,在 stdlib 中它会阻塞线程,并同步等待结果。如果你想将连续传递风格应用于 future,你必须使用 Akka 或 Scalaz,它们允许直接从盒子中添加有关 future 完成的钩子。
Akka:
与 Scalaz:
Yes, in stdlib it blocks the thread, and synchronously waits for results. If you want to apply continuation-passing style to futures, you'd have to use Akka or Scalaz that allow adding hooks on futures completion straight from the box.
Akka:
Same with Scalaz:
它应该阻塞当前线程,但工作线程是否被阻塞,这取决于情况。
It should block current thread, but whether the worker thread is blocked, it depends.