„Writing correct programs is hard; writing correct concurrent programs is harder. There are simply more things that can go wrong in a concurrent program than in a sequential one.“ (Brian Goetz)
Die Erstellung von Programmen, die in mehreren parallelen Threads ablaufen, wird in Java direkt von der Sprache unterstützt. Aus diesem Grund gehören fundierte Kenntnisse der Multithread-Programmierung zum Basiswissen eines jeden Java-Programmierers. Heutzutage gibt es kaum noch Anwendungen, die kein Multithreading einsetzen. Das bedeutet, dass jede/r Java-Entwickler:in, selbst wenn er/sie selbst keine Threads oder Tasks implementiert, damit rechnen muss, dass die eigenen Abstraktionen von anderen Threads und Tasks konkurrierend verwendet werden – und schon muss der/die Entwickler:in über die Thread-Safety seiner Klassen nachdenken. Im Grunde genommen ist fast jede/r Java-Entwickler:in in irgendeiner Form vom Multithreading betroffen – und die Anforderungen steigen.
Ihre Trainerin
Angelika Langer arbeitet als unabhängige Trainerin mit eigenem Kursprogramm basierend auf ca. 25 Jahren Erfahrung in der Softwareentwicklung, u.a. in C++ und Java. Sie ist Autorin zahlreicher Fachveröffentlichungen zum Thema Java und C++, darunter die Kolumne „Effective Java“ im JavaMagazin, das Online Java Generics FAQ, sowie das Buch „Standard C++ IOStreams“. Sie ist Referentin auf internationalen Fachkonferenzen im In- und Ausland. Aktuell liegt ihr Hauptinteresse im Training, Coaching und Mentoring im Bereich der objektorientierten Softwareentwicklung mit C++ und Java.
Inhalt
Multi-Threading Basics
- Synchronization Basics
- Thread Safety
- Thread Creation
Concurrency Control
- Shared Mutable State & Synchronization
- Implicit and Explicit Locks
- Read-Write-Lock & Stamped Lock
- Signals & Conditions
- Blocking Queues & Deques
- Semaphore & CountDownLatch
- Barrier & Phaser
- Synchronized Collections
- Concurrent Collections
- Thread-Local Memory
- Atomic Scalars & Accumulators
Thread and Task Control
- Task Execution, Threads & Pools
- Thread States, Groups & Priorities
- Thread Interruption
- Threads & Exceptions
- Thread Pool Executor Basics & Setup
- Completion Service
- Scheduled Tasks
- Thread Pool Executor Configuration
- Thread Pool Executor Shutdown
- Thread Pool Executor Customization
- Fork-Join-Framework
- Recursive Tasks
- Fork-Join-Framework Principles & Basic Usage
- Fork-Join-Framework Configuration
- Managed Blocker
- Fork-Join-Framework Internals & Performance
- Completable Future
- Asynchronous Result Retrieval
- Reactive Fluent Programming
- Virtual Threads & Structured Concurrency
Memory Model
- Memory Effects of Volatile Variables
- Double Checked Locking
- Initialization Safety of Final Fields
- Atomic References
- Lock-Free Programming
Voraussetzungen
Grundkenntnisse in Java (beispielsweise durch unsere Grundlagen-Seminare in Java).
Die Seminarunterlagen sind in englischer Sprache.