“在不同的场景中,actor 可以替代:线程;Java EE 会话 bean;......”
我不明白actor如何替代会话bean,因为它们的工作方式完全不同:通过向它传递消息来串行调用一个actor,它按照发送的顺序一次处理一个消息。这意味着actor内部任何业务逻辑的运行都是同步的。另一方面,会话 bean 是池化的——它们有很多,并且多个线程可以随时运行相同的业务逻辑,这意味着逻辑是同时运行的。
谁能澄清我对这个声明的误解?
“在不同的场景中,actor 可以替代:线程;Java EE 会话 bean;......”
我不明白actor如何替代会话bean,因为它们的工作方式完全不同:通过向它传递消息来串行调用一个actor,它按照发送的顺序一次处理一个消息。这意味着actor内部任何业务逻辑的运行都是同步的。另一方面,会话 bean 是池化的——它们有很多,并且多个线程可以随时运行相同的业务逻辑,这意味着逻辑是同时运行的。
谁能澄清我对这个声明的误解?
过多的 ejb 并发通常会导致各种锁争用和性能下降。
同时 akka 是针对异步处理和 nio 的。当线程数接近 CPU 内核数时,这种方法最有利。
请注意,akka 并不强制执行一个处理线程。参见例如Akka 控制线程池线程
您可以汇集 Actors(子代)或 Akka 路由器后面(技术上也是子代),这样您就可以调整“并发”。