scala并发编程中akka actor的奇怪行为

Strange behavior from akka actor in scala concurrent programming

我的代码:


我运行它用相同的数字重复三次,输出:

错了!

the FibonacciNumber test Started!!!
the FibonacciNumber(8) is 
 20

这是正确的

the FibonacciNumber test Started!!!
the FibonacciNumber(8) is 
 21

错了!

the FibonacciNumber test Started!!!
the FibonacciNumber(8) is 
 19

拥有一个由多个参与者同时更新的全局变量是不安全的。多个 actor 可以同时处理消息,如果两个或多个 actor 尝试同时更新这些变量,则不会给出正确的结果。因此,使用此算法,您至少需要将 counterresult 转换为 AtomicInteger.

最好改进算法以避免全局变量。状态信息应该使用请求和回复在参与者之间传递,而不是在多个参与者同时访问的变量中