Newsletter

   Kontakt

Parallele Programmierung in Java

Effiziente Software für Multi-Core Systeme

(3-tägiger iX-Workshop)

In diesem praxisorientierten Seminar wird die parallele Programmierung in Java von Grund auf erschlossen. Sie werden dadurch in die Lage versetzt, effiziente, deterministische parallele Programme in Java eigenständig zu entwerfen, und Sie lernen, die richtigen Technologien und Architekturen für Ihren Anwendungsfall auszuwählen.

Im Laufe der Jahre sind stetig neue parallele APIs ins JDK aufgenommen worden, um Multicore-CPUs immer besser nutzbar zu machen. Sie lernen im Seminar alle wichtigen APIs für die Parallelität in Java kennen, und Sie verstehen im Detail, welche technologischen Paradigmen diesen jeweils zugrunde liegen.

Sie programmieren im Seminar zahlreiche Übungen, um die Tricks und Schwierigkeiten der Parallelität praktisch zu erfahren. So sehen Sie, wie man mit Threads Algorithmen beschleunigt und lernen dabei auch die Fallstricke einer unüberlegten Parallelisierung kennen. Sie Setzen Fork-Join Tasks ein und erkennen an konkreten Beispielen, wo diese den klassischen Threads überlegen sind. Mit Java Parallel Streams lernen Sie ein elegantes API für die transparente parallele Datenverarbeitung einzusetzen.

Grundlagen der Parallelität, wie der sichere gegenseitige Ausschluss mit synchronized und mit expliziten Mutexen, die Koordination über das Monitor Pattern, der korrekte Einsatz von Condition Variablen sowie ein sicherer Umgang mit dem Java Memory Modell werden theoretisch erschlossen, und praktisch erfahrbar gemacht.

Um das Verhalten Ihrer parallelen Programme zu genau zu verstehen, erhalten Sie einen tiefen Einblick in die Realisierung von Threads und Synchronisation im Zusammenspiel der Java VM mit dem unterliegenden Betriebssystem und der Hardware.

Zielgruppe

Entwickler, Architekten und Entscheider, die parallele Systeme mit Java entwickeln.

Voraussetzungen

  • Java Grundlagen sind erforderlich.
  • Es ist kein Wissen über parallele Programmierung erforderlich.

Leistungen Ihres Workshoptickets

  • Workshopunterlagen
  • Tagungsgetränke & Verpflegung
  • Teilnahmebescheinigung


Der Workshop ist auf 15 Teilnehmer begrenzt!

Durchführung

Ist die Durchführung der Veranstaltung aufgrund höherer Gewalt, wegen Verhinderung eines Referenten, wegen Störungen am Veranstaltungsort oder aufgrund zu geringer Teilnehmerzahl (weniger als 50%) nicht möglich, werden die Teilnehmer spätestens 14 Tage vorher durch das heise Events-Team informiert.

Kontakt

Haben Sie Fragen zu der Organisation oder der Veranstaltung? Gern beantworte ich Ihre Fragen per E-Mail!

Jennifer Rypalla // jery@heise.de

Termine & Preise

tba, Frankfurt am Main

DE-CIX Management GmbH, Lindleystraße 12, 60314 Frankfurt am Main

Zur Zeit keine Tickets verfügbar

09. - 11.12.2019, Hannover

Heise Medien GmbH & Co. KG, Karl-Wiechert-Allee 10, 30625 Hannover

Tickets Hannover

Preise

Frühbucherpreis: 1.831,00 € *

Standardpreis: 2.034,00 € €

Alle Preise inkl. MwSt.

* 10% Frühbucherrabatt bis 6 Wochen vor Veranstaltungsbeginn

Agenda & Trainer

Programm Tag 1

  • 08:30 - 09:00 Uhr Registrierung

  • 09:00 - 13:00 Uhr Workshop

  • 13:00 - 13:45 Uhr Mittagspause

  • 13:45 - 17:00 Uhr Workshop

Programm Tag 2 & 3

  • 09:00 - 13:00 Uhr Workshop

  • 13:00 - 13:45 Uhr Mittagspause

  • 13:45 - 17:00 Uhr Workshop

Jeweils 15 Minuten Kaffeepause am Vormittag und am Nachmittag. Jeweils 60 MInuten Mittagspause von 12.30 Uhr bis 13:30 Uhr.

Inhalt

1 Grundlagen der Parallelität in Java

  • Technologieübersicht: Threads, ForkJoin Tasks, ParallelSteams, CompletableFuture
  • Parallelisierung von Algorithmen: Performance im Multi-Core
  • Gegenseitiger Ausschluss: Realisierung von Mutex in JVM und Betriebssystem


2 Java Thread Programmierung: Mächtig aber riskant

  • Java Thread API 
  1. Starten, joinen, Exceptionhandling
  2. Parallelisierung mit Threads: Performancesteigerung vs. Kosten und Risiken
  3. Threadpool und Future: Effiziente Thread-Nutzung, Use-Cases, Grenzen
  4. Architektur von Threads in der JVM und die Kooperation mit dem Betriebssystem

  • Synchronisation in Java
  1. Das synchronized Keyword: Implizite blockorientierte Synchronisation
  2. ReentrantLock, ReentrantReadWriteLock, Semaphore: Explizite Synchronisation
  3. CyclicBarrier, Phaser: Synchronisation komplexer Abläufe
  4. Risiken der Synchronisation: Deadlock und Data-Race
  • Monitor und Condition-Variable in Java
  1. Das Monitor Pattern: Realisierung von Producer-Consumer Szenarien
  2. wait() und notify(): Sprachintegrierter Monitor
  3. Condition: Explizite Monitor-Implementierung
  4. BlockingQueue: Gekapselter Monitor, einfache Realisierung von Producer-Consumer


3 Java Fork-Join Tasks: Effiziente, skalierbare Parallelität

  • User-Mode Work-Stealing Task-Scheduler: Löst Probleme der Thread Parallelität
  • ForkJoinTask API: Bäume für die Daten- und Taskparallelität
  • Parallelisierung rekursiver Algorithmen mit ForkJoinTasks
  • ForkJoinPool API: Optimierungsoptionen
  • CompletableFuture: API für Task-Parallelität
  • CountedCompleter: Basis für die Parallel-Streams
  • Architektur der Fork-Join Tasks im JDK


4 Parallel-Streams: Implizite Datenparallelität

  • Map-Reduce Pipeline ermöglicht automatische Parallelisierung
  1. Terminale und intermediäre Operatoinen: map(), reduce(), filter(), flatMap(), collect()
  2. Funktionale operationale Parameter: Zustandslos und seiteneffektfrei
  • Spliterator-API: Rekursive Partitionierung von Datenstrukturen
  1. Spliteratoren des JDK verstehen und nutzen
  2. Eigene Spliteratoren programmieren
  • Collector-API: Mutable Reduktion
  1. Anwendung der Standard-Collectoren: joining(), groupingBy(), mapping()
  2. Eigene Collectoren für spezielle Anforderungen programmieren
  • Architektur der Parallel-Streams im JDK auf Basis von ForkJoinTasks


5 Hardwarenahe Aspekte der Parallelität

  • Das Java Memory-Model
  1. Die „starke Garantie“ des JMM: Einfache Regel für deterministische Parallelität
  2. Definition und Semantik des JMM
  • Spinlocks und Atomare Instruktionen
  1. Realisierungsbasis für den gegenseitigen Ausschluss
  2. Effiziente Alternative zur Synchronisation


6 Parallele Architekturen

  • Wie wähle ich die richtige API für meinen Anwendungsfall aus?
  • Welche Architekturen haben sich in Multi-Core Projekten bewährt?

Marwan Abu-Khalil

Marwan Abu-Khalil ist Senior Software Architekt für parallele und verteilte Systeme im Forschungsbereich der Siemens AG. Er hält regelmäßig Konferenzvorträge und Seminare über Parallelisierung und ist Trainer für zertifizierte Softwarearchitekten der Siemens AG.