Nebenläufige Programmierung mit Threads
Java unterstützt seit Version 1.0 die Entwicklung von Multithreaded-Anwendungen. Dieses kompakte Seminar frischt zunächst die Grundlagen der parallelen Programmierung mit den Typen
Thread und Runnable auf. Im Fokus steht anschließend das Paket java.util.concurrent und dessen Unterpakete, die eine effiziente und komfortable Thread-Koordination ermöglichen. Abgerundet wird das Seminar mit praxisnahen Einblicken in moderne Parallelisierungsansätze, wie das leistungsstarke Fork/Join-Framework und den Einsatz paralleler Streams zur einfachen Verarbeitung großer Datenmengen.
Inhalte des Seminars
Wiederholung zentraler Begriffe
- Notwendigkeit von nebenläufigen Programmen (Mehrkernprozessoren)
- Zustandsänderungen, Immutability
- Erzeugen von Threads
- Die Schnittstelle
Runnable - Lebenszyklus von Threads, Starten und Stoppen, Interrupt
- Auf das Ende mit
joinwarten - Dämonen
- Thread-Scheduling und Prioritäten
- Exceptions: Auffangen von Ausnahmen
- Race Conditions
- Mit
synchronizedMethoden oder kritische Abschnitte schützen - Reentrante synchronisierte Blöcke
- Synchronisierung statischer Methoden und Objektmethoden
- Verhungern (Starvation)
- Deadlocks, Deadlock Detection Utility der JVM und von Eclipse
waitundnotify,notifyAllsowie Zeitfenster und InterruptsThreadLocal- Threads und assoziierte
ClassLoader
Das Paket java.util.concurrent
- Entstehung des Paketes durch Doug Lea
- Nutzung für Java-Versionen vor 5.0
java.util.concurrent.atomic
Lock und ReentrantLock
- Das Paket
java.util.concurrent.locks - Die Schnittstelle
Lockfür explizites Locking - Lock-Implementierung
ReentrantLock lock,unlock,finally- Die Aufzählung
TimeUnit
Executor
- Die Schnittstelle
ExecutorundExecutorService - Thread-Pools und Scheduled Threads
ThreadPoolExecutor,RejectedExecutionHandler
Scheduling
java.util.Timerundjavax.swing.TimerScheduledThreadPoolExecutor- Scheduling im Großen: Quartz
Runnable und Callable
- Threads mit Ergebnissen
Callableund die Nutzung- Spätere Ergebnisse mit
Future CompletionStageundCompletableFuture
Komfortable Thread-Koordination
- Schnittstellen
Queue,BlockingQueue,TransferQueue - Implementierungen
LinkedBlockingQueue,DelayQueue,PriorityBlockingQueue CyclicBarrier, Vergleich mitjoinCountDownLatch,Exchanger,Phaser
Threads in der Java-Bibliothek
- Thread-Kommunikation mit Piped-Stream,
PipedReader,PipedWriter - Paralleler Zugriff auf Datenstrukturen
Vectorvs.ArrayList Collections.synchronizedXXX, Iteratoren- Lock-Free Datenstrukturen,
ConcurrentHashMap,ConcurrentLinkedQueue CopyOnWriteArrayList,CopyOnWriteArraySet- Threads in Swings, der AWT-Event-Dispatching Thread
Stream-API
- Lambda-Ausdrücke
- Stream-API
- Intermediäre und terminale Operationen
- Parallele versus sequenzielle Abarbeitung
Ausblick
- Testen von multithreaded Code
- Theads in Containern (Jakarta EE, Spring, Servlet-Container)
- Reactive Programming und Flow-API
Die Fakten
- Schulungsdauer: 2 Tage, insgesamt 16 Unterrichtsstunden à 45 Minuten
- Gesamtumfang: 16 Unterrichtsstunden à 45 Minuten
- Zielgruppe: Softwareentwickler
- Vorkenntnisse: Der Kurs ›Java Grundlagen‹, ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.
- Schulungsunterlagen: Deutschsprachige Unterlagen (Kopien der Folien), Zertifikat
- Softwareumgebung: Java 25 ist die verwendete LTS Standardversion. Als Entwicklungsumgebung dient standardmäßig IntelliJ IDEA. Alternativ können auch die Eclipse IDE oder Visual Studio Code verwendet werden.
Termine / Kontakt
Wir helfen Ihnen gerne bei der Anmeldung und einen passenden Termin zu finden. Kontaktieren Sie uns per E-Mail oder unter 0800/tutegos (kostenlos aus allen Netzen).
Weiterführende Seminare
Eclipse IDE, Oberflächen mit Swing und JFC, Datenbankanbindung über JDBC, Java und XML, Jakarta Server Pages (JSP) und Servlets, Java Platform, Enterprise Edition (Jakarta EE), Enterprise Anwendungen mit Jakarta EE, Spring-Framework, OR-Mapping mit Hibernate und JPA, Oracle Certified Professional Java Programmer (OCPJP), Refactoring, Design Pattern (Entwurfsmuster) in Java, Effektiv Java programmieren