如何并行创建100万名演员?

时间:2014-11-11 16:13:02

标签: java scala akka

这只是一个学习的例子。

我有一个拥有100万个ID列表的演员 (这只是一个简单的例子。在现实生活中,这些演员可以代表银行账户,我会发送给他们"告诉"或者#34;广播"消息。所以我想把他们全部留在同时在记忆中)

我希望这个演员创造100万个儿童演员(每个id一个)

是否存在比此代码更平行的方式?

receive (Msg,..) {

 ids.stream().forEach(
           id -> {
                    context().actorOf(MyActor.props(id));
                }
    );
}

2 个答案:

答案 0 :(得分:1)

为什么不为孩子们使用BroadcastRouter

val children = system.actorOf(Props[ChildrenActor].withRouter(
      BroadcastRouter(nrOfInstances = amountOfChildren)))

这是为了您每次只需要向所有孩子发送消息。如果您需要向孩子发送广播和个人消息,您可以使用ConsistentHashingRouter来映射带有子ID的消息。

答案 1 :(得分:0)

您可以将集合转换为并行集合以使其并行遍历:

scala> (0 to 20).par.foreach(print)
10211345071289151618192061171314