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. Sie ist u.a. Autorin des "Java Generics FAQ".
Klaus Kreft arbeitet seit ca. 17 als Consultant und Performance-Experte im Bereich der Software-Entwicklung mit Java. Sein Hauptinteresse gilt komplexen Systemen mit hohen Performance-Anforderungen. Er ist Sprecher auf Fachkonferenzen, darunter JAX und OOP.
Gemeinsam sind sie Autoren zahlreicher Veröffentlichungen, darunter die Kolumne "Effective Java" im JavaMagazin und das Buch "Java Core Programmierung – Memory Modell und Garbage Collection". Weitere Informationen unter www.AngelikaLanger.com.
13.12.2011
LOCATION: Zürich
KEYWORDS: Technology
AGENDA: | 17:00 - 19:00h: Talk incl. Q/A Afterwards you are invited to a refreshment. |
SPEAKER 1: Angelika Langer COMPANY: Angelika Langer Training/Consulting
SPEAKER 2: Klaus Kreft COMPANY:
In diesem Tutorial geht es um das Java Memory Model und den Fork-Join-Pool (inkl. Ausblick auf "filter/map/reduce for Java" in Java 8).
Multicore-Prozessoren verwenden aufwendige Caching-Mechnismen, um ein gute Verarbeitsgeschwindigkeit zu erreichen. Diese Caching-Verfahren haben dazu geführt, dass die Programmiersprachen ihre Anforderungen an die so-genannte "cache coherence" reduzieren mussten, d.h. es ist keineswegs garantiert, dass alle Threads in einer Anwendung eine übereinstimmende Sicht auf die Daten im Speicher haben. Vielmehr können unterschiedliche Threads zum selben Zeitpunkt unterschiedliche Werte für dieselben Speicherzellen sehen.
Diese "relaxed cache coherence" hat in Java dazu geführt, dass mit Java 5 das Speichermodell der Sprache (JMM – Java Memory Model) überarbeitet und präzisiert wurde. Die Sprachspezifikation definiert Garantien bzgl. Atomicity, Visibility und Reordering von Speicherzugriffen. Auf diese Garantieren können sich die Programmierer verlassen; anderseits muss eine virtuelle Maschine die Sprachgarantieren auf Basis des jeweiligen Hardware-Memory-Modells implementieren. Für Java-Entwickler bedeutet es, dass sie die Garantien des Speichermodells kennen müssen, um korrekte Multithread-Programme schreiben zu können.
Die Session gibt einen Überblick über die Regeln des Java-Speichermodells. Seit Java 5 wurden Anstrengungen unternommen, die Multithread-Programmierung in Java durch Standardabstraktionen im JDK zu unterstützen. Das Package java.util.concurrent liefert eine Reihe von Synchronisationsmechanismen (wie Lock, Semaphore, Barrier, Latch, Phaser, Queue und Deque). Daneben gibt es mehrere Threadpool-Implementierungen. Relativ neu ist der in Java 7 hinzugekommene Fork-Join- Pool, der für die Parallelverarbeitung von rekursiven, voneinander abhängigen Aufgaben konzipiert ist.
Die Session betrachtet diesen neuen Threadpool näher. Es wird der Unterschied zum herkömmlichen Thread-Pool erläutert; es wird Einblick in die Implementierung und Arbeitsweise des Fork-Join-Frameworks gegeben und seine Verwendung anhand von Beispielen gezeigt. Der Fork.Join-Pool ist deshalb besonders interessant, weil er eine zentrale Rolle spielt im Zusammenhang mit der Parallelisierung von Zugriffen auf Sequenzen. Im Rahmen des Java Enhancement Proposal JEP 107 "Bulk Data Operations for Collections" (auch als "filter/map/reduce for Java" bekannt) werden für Java 8 Erweiterungen an den bestehenden Collections im JDK spezifiziert, damit "bulk operations" in Zukunft automatisch von mehreren Threads parallel ausgeführt werden.
Slides können von Mitgliedern der jug.ch im Sekretariat angefordert werden.
LANGUAGE: Talk: de / Slides: en
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. Sie ist u.a. Autorin des "Java Generics FAQ".
Klaus Kreft arbeitet seit ca. 17 als Consultant und Performance-Experte im Bereich der Software-Entwicklung mit Java. Sein Hauptinteresse gilt komplexen Systemen mit hohen Performance-Anforderungen. Er ist Sprecher auf Fachkonferenzen, darunter JAX und OOP.
Gemeinsam sind sie Autoren zahlreicher Veröffentlichungen, darunter die Kolumne "Effective Java" im JavaMagazin und das Buch "Java Core Programmierung – Memory Modell und Garbage Collection". Weitere Informationen unter www.AngelikaLanger.com.
JUG Switzerland aims at promoting the application of Java technology in Switzerland.
JUG Switzerland facilitates the sharing of experience and information among its members. This is accomplished through workshops, seminars and conferences. JUG Switzerland supports and encourages the cooperation between commercial organizations and research institutions.
JUG Switzerland is funded through membership fees.