Workshop-Tage 2009
09.09. - WS 5: Das Java Memory Modell und Lock-Free-Programming
Ganztages-Workshop
[Referenten] [
Einleitung] [Programm] [
Kursziel] [Adressaten] [Voraussetzungen] [max. Teilnehmerzahl]
[Kursbeurteilung] [Programmübersicht] [WS4] [WS6]
Referent/-in
Angelika Langer, AngelikaLanger.com
Angelika Langer arbeitet als Trainerin und Consultant mit eigenem Schulungsprogramm im Bereich der Software-Entwicklung mit C++ und Java. Sie ist Sprecherin auf zahlreichen Konferenzen, darunter JavaOne, OOPLSA, JAX, und viele andere.
Zusammen mit Klaus Kreft ist sie Autorin zahlreicher Veröffentlichungen, darunter die ehemalige Kolumne "Effective Java" im JavaMagazin sowie das online "Java Generics FAQ". Weitere Informationen unter www.AngelikaLanger.com.
Einleitung
Mit der zunehmenden Verwendung von Multicore-Prozessoren ergibt sich für Java-Entwickler die Notwendigkeit, das Java-Memorymodell genauer zu verstehen. Es kann nämlich passieren, dass Multithread-Anwendungen, die auf ein Single-Core-Systemen "fehlerfrei" funktionieren, auf einer Multi-Core-Architektur "unerklärlicherweise" Fehler liefern. Das kann u.U. mit dem Caching auf Prozessorlevel zusammenhängen. Um generell auf die Problematik aufmerksam zu machen, nehmen wir in dem Tutorial das Java Memory Modell etwas genauer unter die Lupe.
Aber nicht nur das Memory-Modell wird immer wichtiger, sondern auch die Vermeidung von Synchronisation spielt eine zunehmende Rolle. Mit der Verbreitung von Multicore-Prozessoren wird erwartet, dass Anwendungen skalieren in dem Sinne, dass sie mit mehr Prozessorkernen schneller laufen. Dieser wünschenswerte Effekt ergibt sich aber nicht von allein, sondern ein Java-Programm muss so programmiert sein, dass es die mehreren Prozessoren auch ausnutzt. Im Klartext heisst es für den Entwickler, dass er sequentielle, d.h. nicht-parallele Verarbeitungen reduzieren muss. Dazu gibt es zahlreiche Techniken. Der Verzicht auf Synchronisation mit Hilfe von Locks gehört dazu. In diesem Zusammenhang spielen AtomicVariables und Lock-Free-Programming eine Rolle.
Der Workshop erläutert das Java Memory-Modell, die Probleme mit der Visibility und dem Reordering, die Verwendung von volatile und atomic Variablen, die Implementierung von unveränderlichen Typen, die Bedeutung von final Feldern und der Initialisation-Safety-Garantie, und grundlegenden Techniken des Lock-Free-Programming.
Programm
- Java Memory Model
- Visibility, Atomicity, Reordering
- Garantien für volatile
- Double-Checked Locking
- Initialisation Safety für final Felder
- Safe Object Sharing
- Atomare Variablen
- Lock-Free Programming
Kursziel
Die Teilnehmer/-innen lernen, wie man konkurrierende Abläufe optimieren kann, indem auf Synchronisation verzichtet wird. Sie werden auf typische Missverständnisse und Fehler im Zusammenhang mit dem Java Memory Modell aufmerksam gemacht. Sie sollten nach dem Workshop in der Lage sein, stabilere und robustere Multithread-Programme zu entwickeln.
Adressaten
Java-Entwickler/-innen, die Parallelverarbeitungen für Multicore-Architekturen entwickeln oder sich ganz allgemein für Multithread-Programmierung in Java interessieren.
Voraussetzungen
Eher fortgeschritten; es sind Kenntnisse in der Multithread-Programmierung in Java erforderlich.
eigener Laptop mit:
* JDK 1.5 oder neuer (nur Sun, keine GNU-Tools, JRE reicht nicht)
* Eclipse 3.3
Alternativ können Sie gerne mit einem VMware Image arbeiten, das wir bereitstellen. Sie müssen dafür auf Ihrem Laptop eine aktuelle Version
2.x des kostenlosen VMware Player installieren. Selbstverständlich geht
auch VMware Workstation (Version 6 oder neuer).
max. Teilnehmerzahl
20
Auswertung der Teilnehmer-Feedbacks
Basis 19 Feedbacks
| kein Lerneffekt < > viel gelernt | überhaupt nicht < > voll und ganz | nie wieder < > jederzeit | ||||||||||||
| Lerneffekt des Kurses | Entsprach der Kurs Ihren Erwartungen? |
Würden Sie den Kurs wiederbesuchen? |
||||||||||||
| überhaupt nicht < > voll und ganz | überhaupt nicht < > sehr | zu viel Theorie < > zu viel Praxis | ||||||||||||
| Würden Sie den Kurs weiterempfehlen? |
Nützen Ihnen die Informationen bei Ihrer Arbeit? |
War das Verhältnis von Theorie und Praxis ausgewogen? |
||||||||||||
| zu kurz < > zu lang | zu hoch < > zu tief | dauernd < > überhaupt nicht | ||||||||||||
| Wie war die Vortragsdauer im Verhältnis zum Inhalt? |
Wie war das Vortragsniveau Verhältnis zu Ihren im Vorkenntnissen? |
Wie oft haben Sie sich gelangweilt? |
||||||||||||
| zu komplex < > zu einfach | überhaupt nicht < > voll und ganz | überhaupt nicht < > voll und ganz | ||||||||||||
| Waren die Beispiele angemessen? |
Hat der Referent den Inhalt verständlich vermittelt? |
Ging der Referent auf die Teilnehmer ein? |
||||||||||||
- -sehr gut
-Pause war am Morgen zu spät :-) - PPTs sind auch auf Papier gut lesbar dargestellt.
- Übungen etwas kompliziert.
- Ich bin mit dem Kurs sehr zufrieden, allerdings hätte ich mir etwas mehr praktische Übungen erhofft. Die Zeit war etwas knapp. Jedoch sehr kompetente KursleiterInnen
- Der Schluss war leider zu gedrängt -> weniger Zeit für Besprechung der Beispiele.
[Programmübersicht] [WS4] [WS6]

