Swiss Open Systems User Group

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]

Letzte Änderung: 19. Jun 2009

/ch/open is Member of ICT Switzerland
Puzzle ITC Hosting sponsored by Puzzle ITC
Swiss Open Systems User Group • /ch/open • Postfach 2322 • 8033 Zürich • http://www.ch-open.ch