Play Framework 2的Documentation表示Play是自下而上异步构建的。此外,这意味着在所谓的“默认执行上下文”中存在固定数量的线程。他们建议在此默认执行上下文之外执行长时间运行的任务,以确保应用程序不会阻塞。
在这一点上,我不了解此模型与每个请求的HTTP线程相比的真正好处是什么?他们说要使其更容易扩展并在负载下更好地工作,但是我不知道为什么。
最佳答案
Playframework使用事件模型而不是传统的线程模型。
在线程模型中,存在大量处理传入请求的线程。使用此模型的服务器在池中有很多线程等待传入的请求,这暗示着内存的使用以及共享可变状态的问题(线程共享内存和资源,这在您要扩展时会出现问题)
在事件模型中,存在少量的请求处理线程,它们通过消息传递相互通信。该范例集中在异步任务和功能编程模型上。
关于multithreading - Play 2 : Asynchronous Controllers vs HTTP threads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33112981/