@jugffm: Locks are bad...

Weil's letzte Woche so schön war, habe ich mich entschlossen diese Woche zur JUG nach Frankfurt zu fahren. Es ging um Locks und das die eher schlecht sind: "Locks are bad..." hat Martin Kühnert vorgestellt.

Bei den ersten Folien habe ich mich direkt in die Betriebssysteme-Vorlesung vom dritten Semester zurückversetzt gefühlt. Ganz unbekannt ist die Thematik von (Dead)Locks, Race Conditions etc. ja für kaum einen Entwickler.

Zentrales Thema des Vortrags war das Actors-Prinzip, illustriert mit einem Beispiel in Scala. Worum es im Grunde ging - ich hoffe, ich bekomme das noch korrekt zusammen - : Werte und Objekte werden nicht verändert, sie sind immutable. Vielmehr werden (aus bestehenden Objekten) neue erzeugt. Die Kommunikation erfolgt über Nachrichten, die in der Mailbox eines Actors landen, von ihm bearbeitet und weitergeschickt werden. So wird direktes Aufrufen und damit das Blockieren vermieden. Der Actor kümmert sich drum, wenn er Zeit hat. Organisiert werden die Actors durch einen übergeordneten Sheduler.

Das Prinzip von Aktoren und Message-Passing ist wohl tatsächlich ziemlich alt, wurde ursprünglich von Erlang implementiert und nun mit Scala (und anderen auf der JVM aufbauenden Sprachen) nur wieder aufgenommen.

Und da liegt der Knackpunkt (für mich): Soweit ich es nun verstanden habe, kann man Aktoren in reinen Java-Anwendungen nicht verwenden, da es sie dort einfach nicht gibt(?). Google spuckt zu dem Thema einen kurzen heise Developer-Artikel aus: µJavaActors.

Update:

Auch die kurze, an den Vortrag anschließende Diskussion hat nicht alle Zweifel ausgeräumt, dass Aktoren die üblichen Lock-Probleme lösen. Kernfrage dabei war: Was passiert, wenn ein Actor auf das Ergebnis eines anderen Actors warten muss.

Es ist definitiv ein viel beschäftigendes Thema. Und für den Feierabend keine leichte Kost. Trotzdem ist es meinem Gefühl nach nicht verkehrt, auch solche Themen anzusprechen und vorzustellen. Letztendlich geht es ja darum, sich mit dem eigenen Handwerk zu beschäftigen und vielleicht sogar was Neues zu lernen. ;)

Referenz im Studium war übrigens Tanenbaums "Moderne Betriebssysteme" (Kapitel 6: Deadlocks) dazu. Und Scala finde ich nach den gezeigten Beispielen etwas merkwürdig.

Eine Randnotiz zum User Group-Treffen: Ich war nicht nur die einzige Frau sondern auch (mal wieder) Küken in der Runde. Schade eigentlich.