Haben Sie Interesse an einer individuellen Inhouse-Schulung zu diesem Thema? Nehmen Sie einfach Kontakt mit uns auf.
»Anfrage für Inhouse-Seminar
Mirko Hillert
Tel.: +49 (0)331-282-2225
Fax: +49 (0)331-282-2228
E-Mail: mhillert@entwickler-akademie.de
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.
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.