Inhouse-Seminar

Haben Sie Interesse an einer individuellen Inhouse-Schulung zu diesem Thema? Nehmen Sie einfach Kontakt mit uns auf.

»Anfrage für Inhouse-Seminar

Ansprechpartner

Ihr Ansprechpartner: Mirko Hillert

Mirko Hillert
Tel.: +49 (0)331-282-2225
Fax: +49 (0)331-282-2228
E-Mail: mhillert@entwickler-akademie.de

Das Java Memory Modell und Lock-Free-Programming

Seminarbeschreibung

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 heißt 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.

Seminarinhalt

  • 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

Ziel

  • LINQ-Operatoren
  • Abfrage Optimierungen
  • Einsatzbereiche für LINQ
  • LINQ mit eigenen Operatoren erweitern

Teilnehmerkreis

Java-Entwickler, die Parallelverarbeitungen für Multicore-Architekturen entwickeln oder sich ganz allgemein für Multithread-Programmierung in Java interessieren.

Teilnehmervoraussetzungen

Grundkenntnisse Java und Multithreading

Technische Voraussetzungen

Notebook/PC mit einer Installation von Java 5 oder 6. Außerdem ist eine Installation des Test-Tools ConTest zu empfehlen; kann von http://www.alphaworks.ibm.com/tech/contest/download heruntergeladen werden.

Zusätzliche Hinweise

Das Training beginnt um 9:00 Uhr und endet um 17:00 Uhr. Enthalten ist eine Pause mit Snacks, Kaffee und Softgetränken am Vormittag und Nachmittag sowie eine Stunde Mittagspause mit Buffet.

Bitte beachten Sie: Für die Teilnehmer des Workshops bietet das Novotel unter dem Kennwort „Entwickler Akademie“ einen Sonderpreis für die Übernachtung. Einzelzimmer können Sie für € 109,- inkl. Frühstück buchen.