共享队列VS Actor Model

时间:2015-10-15 09:13:35

标签: java multithreading asynchronous concurrency actor-model

在我的J2EE Web应用程序中,我必须将每个Web API调用的计数发送到隔离线程,以计算调用次数。可能性包括:

a)使用原子长度。我想如果我在一分钟内有数百万的电话会引起争用。因为,所有线程都会尝试更新单个变量。

b)使用共享队列。每个请求处理线程都将插入到队列中,专用计数器线程将从该队列中出列并递增计数。

c)使用演员模型,比如使用Akka库。向actor发送异步消息,并将其添加到计数中。

我的问题是方法(b)与(c)的比较。什么是利弊,以及它们在低层次上有何不同?

1 个答案:

答案 0 :(得分:1)

在你的情况下,我相信演员模型应该是更好的选择。 与Akka的优点 -

  • 使用Akka的Actor模型将负责线程管理并且易于实现
  • 此外,将来如果你想为不同类型的请求实现计数器,你可以简单地添加一个新的actor。

有一个类似的问题 - When to use actors instead of messaging solutions such as WebSphere MQ or Tibco Rendezvous?