在Akka Actors上使用锁

时间:2015-06-01 08:57:52

标签: scala locking akka

我有一个像这样的Actor(假设接收方法在其他地方被覆盖):

class MyClass extends Actor {     
  def method1() = { ... }

  def method2() = { ... }

  def method3() = {     
    this.synchronized {
      ....
      ....
    }
  }
}

如果我在我的Actor中定义了最终字段,那么会发生什么:

private val lockType = new AnyRef

然后我可以使用此锁来同步我的方法3?有什么区别?我的理解是,使用此引用来锁定方法会使该引用不可用,直到锁被释放。

在上面的例子中,我使用了一个可以独立于this引用运行的锁,只有在对method3做了一些动作时才会锁定,而这个引用仍可用于其他线程吗?

1 个答案:

答案 0 :(得分:4)

不需要在actor内部进行同步。演员一次只会处理一条消息。