我已经阅读了几个教程,并且到处都提到了“非阻塞”。我很困惑,说非阻塞它们意味着异步或非阻塞I / O.
根据我的理解,当在播放服务器上收到任何http请求时,它会分配一个专用线程来处理该请求并保留该线程,直到它返回响应。那么它是如何非阻塞的?
同样通过异步,它们意味着主线程可以生成一个新线程并将其工作委托给它并运行下一个语句? (为此我们需要使用akka)
答案 0 :(得分:0)
要理解这一点,您需要了解scala中的Futures如何工作。期货不会停止执行该程序。所有期货都是非阻塞的。我建议你阅读这篇文章:http://docs.scala-lang.org/overviews/core/futures.html。
由于Play的异步库是在Scala的期货之上构建的。一旦你完成了这项工作,你将有足够的知识来回答你自己的问题。另外,如果您需要有关如何在游戏中使用未来的更多信息,请阅读此内容:
https://www.playframework.com/documentation/2.5.x/ScalaAsync