Play Framework 2中的所有操作都是异步的吗?还是我必须故意使用Promise来实现这一目标?所有Play Framework 2操作都是异步的吗?
为了说明,IO(NIO)是否在与实际动作逻辑不同的线程上执行?
Play Framework 2中的所有操作都是异步的吗?还是我必须故意使用Promise来实现这一目标?所有Play Framework 2操作都是异步的吗?
为了说明,IO(NIO)是否在与实际动作逻辑不同的线程上执行?
这取决于你的意思是什么异步。
所有播放操作都是非阻塞的,因为接受HTTP请求的IO线程与运行操作的IO线程不同,并且从不阻止等待操作完成。所以是的,(HTTP)IO在与实际的动作逻辑不同的线程上执行。
虽然,操作本身可能包含可能需要一段时间的计算。因此,他们可能会阻止执行它们的线程。执行数据库操作时通常会出现这种情况,因为大多数数据库驱动程序都处于阻塞状态。
那么究竟是什么使用Promise(或Future)在另一个线程中执行主任务的好处?与具有“足够”线程的操作相比? – bendahmon 2013-05-08 07:15:07
要添加到斯特凡的答案,
为了澄清,是IO(NIO)在不同的线程比 实际行动逻辑进行
是的,它是
我大概这么说是一个非常简单的视图,所以就这样(但是我希望你会得到这个主意):不,你的行为不是异步的。那么,不是自动的。关于玩吹牛是异步的东西,你可以返回['AsyncResult's](http://www.playframework.com/documentation/api/2.1.1/scala/index.html#play.api .mvc.AsyncResult),[你可以很容易地创建](http://www.playframework.com/documentation/2.1.1/ScalaAsync)。与其他所有东西一样,它不是异步的,只是给你工具以便轻松使用异步内容 – Carsten 2013-05-07 21:58:17
另外Play的Promises [将被丢弃用于'scala.concurrent.Future's](http://www.playframework.com/documentation/2.1.1/Highlights) – Carsten 2013-05-07 21:58:50