705
participiants have registered for our events so far in 2024

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

Java-Programmierung auf Multicore-Plattformen

wie Sprache, JDK und JVM die Parallelverarbeitung unterstützen

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.

LEVEL OF TALK: Intermediate
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.


LEVELS:

BEGINNER
The presented topic is new to the audience or only little and superficial experience exists. This talk will mainly cover basic aspects of the topic and not go into much detail.

INTERMEDIATE
The presented topic is known to the audience, serious practical experience is expected. This talk might cover some basic aspects of the topic, but will as well go into depth and details.

ADVANCED
The presented topic is well-known to the audience, serious practical experience and a deep understanding are required. This talk will not cover basics of the topic, but will go into depth, might discuss details, compare different approaches, and so on.

ALL
The topic presented is of interest to all levels and does not require any special prior knowledge.

top

Supporting members

Platin

Gold

Silver

 
 

 

About

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.

Design
Partner

 

Contact

Java User Group Switzerland
8000 Zürich
info@jug.ch

© Java User Group Switzerland