Neue Concurrency-Modelle auf der JVM - über Fibres, Agents, Verticles und Actors
Nebenläufigkeit hieß bisher in Java: java.util.concurrent und Threads. Threads wurden ursprünglich als „lightweight processes“ konzipiert: Neue Prozesse zu starten, um nebenläufige Operationen zu implementieren, bedeutete zuviel Overhead, und hat das Problem der Kommunikation zwischen den Prozessen aufgeworfen. Threads sollten "leicht" sein und beide Nachteile beseitigen: Weniger Resourcen für die Erzeugung und Scheduling, und gemeinsame Speichernutzung. Allerdings stößt das Modell heute an seine Grenzen. Der Resourcenverbrauch ist immer noch zu groß, und der gemeinsame Speicher ist mehr Problem als Lösung: Race Conditions, Locks, Contention. Um Oracles Java VM-Architekten John Rose zu zitieren: "Threads sind passé". Wir wollen verschiedene Ansätze betrachten, Nebenläufigkeit unterhalb des Thread-Levels umzusetzen, und ihre Vor- und Nachteile beleuchten. Vorgestellt werden Quasar Fibers, Clojure Agents, vert.x Verticles und Akka Actors. Der Vortrag richtet sich an alle, die auf der Java-Platform entwickeln, in Java, Scala oder Clojure.