multithreading - 在 akka scala Actor 中使用单例

标签 multithreading scala actor akka

我有一个 Actor 正在将调用委托(delegate)给有状态的单例。单例是有状态的,因为它维护着一个对象映射。这个单例对象仅在actor和一个类(不是actor)中使用,我在该映射中检索一个对象(因此只是线程安全读取)。

class MyActor extends Actor{
  def receive()={
    case ACase => singleton.amethod()  
    case BCase => singleton.bmethod()
     }
 }

val singleton = new MyActorLogic

class MyActorLogic{
 val map:Map[String, Object] = Map()
 def amethod()=//alter the map

 def readMap(value:String) = map(value)    }                

会不会有任何副作用/问题?
谢谢

最佳答案

不是 出于任何原因这样做。
相信我。

如果您需要那种东西,请改用 Agent,这就是它们的好处:

http://doc.akka.io/docs/akka/2.0.4/scala/agents.html

关于multithreading - 在 akka scala Actor 中使用单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189075/

相关文章:

c++ - 单生产者、多消费者架构

regex - 避免匹配正则表达式中的转义字符

scala - Unit 有哪些类型?

scala - 如果 M 是一个 monad,如何正确地将 List[M[List[A]]] 组合到 M[List[A]] 中?

ios - 为什么 SwiftUI View 模型应该用 @MainActor 注释?

c# - C# 5.0 async/await vs. Akka actor vs. basic fork/join 的示例?

Scala:为什么Actors 是轻量级的?

java - 使用 3 个不同线程中的套接字监听 3 个不同的端口

Java多线程编程——原子操作

JavaFX 线程卡住