Motivation

Mit der Verbreitung von Multicore-Prozessoren wird auch die parallele Programmierung zunehmend wichtiger. Selbst wer sich gar nicht um Hardware- oder Performanzaspekte kümmern will, kommt heute um Nebenläufigkeit nicht mehr herum. Denn bereits jede klassische (Java‑)Server-Anwendung arbeitet Anfragen in mehreren Threads parallel ab und muss dabei die wichtigen Grundprinzipien der nebenläufigen Programmierung berücksichtigen.

Threads haben den Ruf, in ihrer Theorie kompliziert, in ihrer Ausführung wenig fassbar und in ihrer Praxis unberechenbar zu sein. Dieser Kurs zeigt auf, wie der direkte Umgang mit (Low-Level‑)Threads heute im Wesentlichen anderen Konzepten wie Thread-Pools, Synchronisatoren und threadsicheren Datenstrukturen gewichen ist. Sie lernen, wie Sie mit deren Hilfe wesentlich einfacher, eleganter und sicherer programmieren können. So erhalten Sie eine umfassende Übersicht über die aktuelle Java-Concurrency-API und vertiefen darin ausgewählte Konzepte anhand einfacher und anschaulicher Hands-on-Beispiele.

Programm

Im Vordergrund steht die Visualisierung von Threads, das «Fassbar-Machen» ihres Verhaltens und die aktive Programmierarbeit mit Hilfe der modernen Java-Concurrency-API. Dabei wird die von SimplexaCode eigens für diese Zwecke erstellte einfache Visualisierungslösung Thread Visualizer eingesetzt, welche so gut wie jedes erdenkliche Multithreading-Konzept in Echtzeit veranschaulichen kann. Die einfach nachzuprogrammierenden Demonstrationen und dazugehörigen Hintergrundinformationen zur nebenläufigen Programmierung versprechen garantierte Aha-Erlebnisse.

  • Tag 1 | Grundlagen und Locking
    • Einführung in Threads und den Thread Visualizer
    • Threads vs. Executoren und Thread-Pools
    • Sicheres und konformes Unterbrechen von Threads
    • Locking-Prinzipien
    • Threadsichere Datenstrukturen
  • Tag 2 | Fortgeschrittene Konzepte
    • Das Fork-Join-Framework
    • CompletableFuture
    • Spezielle Synchronisatoren
    • Parallelisierung von Streams
    • Ausblick auf Virtual Threads und Structured Concurrency (ab Java 19)

Kursziele

Ziel des Kurses ist, Sie mit den Grundstrukturen der modernen Java-Concurrency-API vertraut zu machen, Ihnen den Umgang mit dem Thema Multithreading zu erleichtern und Ihnen die wichtigsten Utility-Klassen an die Hand zu geben. Sie sehen Nutzen und Gefahren der parallelen Programmierung und können so besser einschätzen, ob und wo sich der Einsatz nebenläufiger Programmierung wirklich lohnt.

Zielgruppen

  • Java-Softwareentwickler mit mehr als einem Jahr Programmiererfahrung

Referent

Christian Heitzmann ist Java-, Python- und Spring-zertifizierter Softwareentwickler mit einem CAS in Machine Learning und Inhaber der SimplexaCode AG in Luzern. Er entwickelt seit über 20 Jahren Software und gibt seit über 12 Jahren Unterricht und Kurse im Bereich der Java- und Python-Programmierung, Mathematik und Algorithmik. Als Technical Writer dokumentiert er Softwarearchitekturen für Unternehmen und schreibt regelmässig Artikel für IT-Fachzeitschriften.

Parallele Programmierung in Java

Kurzlink auf diese Seite: link.simplexacode.ch/o93p2024.03