我最近正在阅读关于actor模型,我发现它是并发问题的一个很好的编程模型。有许多程序语言或工具使用它,如Scala,Jetlang,Klimi等。
但是如何在常见的Web应用程序(例如基于Servlet的应用程序)中使用它们? Servlet以多线程样式执行。我们可以使用actor模型来消除Servlet(或SpringMVC控制器等)中的成员变量之类的共享日期吗?
是否有任何使用actor模型处理并发请求的Servlet容器?
答案 0 :(得分:0)
这是一种误解。你不能“在servlet环境中使用actor模型”,因为应用服务器已经实现了并发模型,它必须遵守Java EE规范。
特别是禁止在servlet中拥有共享数据(可以修改),因为一个servlet对象用于处理所有的comming请求。另一方面,如果你有有状态的EJB组件,那么你就不需要关心并发问题了 - 线程管理是由EJB容器完成的,事实上,你不能搞砸它。
如果您想编写自己的服务器(而不是使用基于Java EE的现有服务器),那么在这种情况下,需要考虑并发模型的选择。
尽管演员是“热门话题”并且现在似乎是“本周的流行语”,但在网上搜索与演员模型的使用相关的问题和陷阱。现实并不像广告理论那么明亮。
如果您搜索可以在Netty上构建的高性能服务器 - 客户端解决方案 - 这是非常酷的软件,这对我们大多数人来说可能就足够了,即使有人想构建第二个Twitter。