Was für ein Objekt synchronisiere ich auf in Scala?

In C# es ist ziemlich einfach:

class Class1{
  private static readonly object locker = new object();
  void Method1(){
    lock(locker) { .... }
  }
}

Und ich auf jeden Fall nicht machen sollte, eine Synchronisierung auf this da es möglicherweise zu einem deadlock führen. Ebenfalls in der Scala sah ich Beispiele und konnte nicht auf die Idee kommen, was ist das grundlegende Prinzip der Synchronisierung und Objekt (Feld) sollte ich verwenden, um eine Synchronisierung:

#1
def add(user: User) {
  //tokenizeName was measured to be the most expensive operation.
  val tokens = tokenizeName(user.name)

  tokens.foreach { term =>
    userMap.synchronized {
      add(term, user)
    }
  }
}

#2
class Person(var name: String) {
  def set(changedName: String) {
    this.synchronized {
      name = changedName
    }
  }
}

#3 and so on...

Würden Sie mir klar machte für mich?

InformationsquelleAutor der Frage | 2013-06-16

Schreibe einen Kommentar