我有一个 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/