当前位置:  开发笔记 > 编程语言 > 正文

如何在java中执行actor(erlang)?

如何解决《如何在java中执行actor(erlang)?》经验,为你挑选了1个好方法。

我在Java中处理财务应用程序并且正确地获得并发是痛苦的.Erlang和actors模型应该适合大规模并发应用程序,但我无法弄清楚如何在Java中实现它.我知道有一些库,如Jetlang,FunctionalJava,kilim等,但它们通常不会超越简单的例子.

假设我需要处理三个或四个不同的事件,比如从市场数据源,订单/交易源和"输出"这些数据的某些衍生物中计算一些数字.大多数情况下,这些事件或数据流需要按顺序处理(至少按照某些键的顺序进行处理...例如,必须按顺序处理特定符号的所有订单,但与尊重不相关的符号)

我使用改变状态的方法创建一个普通的Java对象.我不是让这些方法直接改变状态,而是将它们的参数(通过将它们转换为命令对象)放在fifo队列(erlang的邮箱)中,并使用react()方法处理该队列.这样,所有更新都必须通过单个队列,并且react()方法一次只能访问一个更新.从理论上讲,这应该可以节省锁定或同步此方法的需要.

但是,此队列基本上是生产者/消费者队列,这意味着它是阻塞队列.阻塞对于可伸缩性来说非常糟糕.此外,拥有一个队列意味着我的所有更新命令对象(不同类型)都从队列中带出一些过于通用的超类型(如Object),我必须将它们转换回正确的类型并让react()处理它们.

一旦这个actor化对象产生一个输出,由另一个这样的对象消耗,我就会经历同一个过程.换句话说,我已经将编程模型从面向对象改变为返回结果的方法,以及某种延续传递噩梦,其中我的所有方法都变为异步.

我有什么想法可以解决这个问题吗?



1> manku..:

最近,akka为Scala提供了一个actor框架,它基于Erlang.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有