Nebenläufige Programmierung mit Threads
Seminar
In Dortmund
Beschreibung
-
Kursart
Intensivseminar berufsbegleitend
-
Niveau
Mittelstufe
-
Methodik
Inhouse
-
Ort
Dortmund
-
Dauer
2 Tage
-
Beginn
nach Wahl
Java ermöglicht seit der Version 1.0 das Programmieren von Multithreaded Applikationen. Das Kompaktseminar wiederholt zunächst die Grundlagen paralleler Anwendungen mit den Typen Thread, Runnable sowie dem Konstrukt synchronized. Im Hauptteil lernen die Teilnehmer die Klassen und Schnittstellen aus dem Paket java.util.concurrent und Unterpaketen kennen, mit denen Thread-Koordination nunmehr komfortabel und effektiv möglich ist. Im Ausblick führt das Seminar an Beispielen das Fork/Join-Framework vor, was Teil von Java 7 ist. Parallele Streams aus Java 8 sind Teil vom Ausblick.
Standorte und Zeitplan
Lage
Beginn
Beginn
Hinweise zu diesem Kurs
Der Kurs ›[(Java Grundlagen)]‹, ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.
Meinungen
Themen
- Java
- Programmierung
Dozenten
tutego Dozent
IT-Programmierung
auf Anfrage Unsere Dozenten haben jahrelange praktische Erfahrungen in Ihren Fachgebieten durch Projektarbeit. Ihr Referent für das Seminar kann sich durch seine langjährige Erfahrung als Dozent und detaillierten Kenntnisse im gewünschten Bereich schnell auf die Bedürfnisse Ihrer Mitarbeiter einstellen.
Inhalte
- Notwendigkeit von nebenläufigen Programmen (Mehrkernprozessoren)
- Erzeugen von Threads
- Die Schnittstelle @@Runnable@@
- Lebenszyklus von Threads, Starten und Stoppen, Interrupt
- Auf das Ende mit @@join@@ warten
- Dämonen
- Thread-Scheduling und Prioritäten
- Exceptions: Auffangen von Ausnahmen
- Race Conditions
- Mit synchronized Methoden 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
- @@wait@@ und @@notify@@, @@notifyAll@@ sowie Zeitfenster und Interrupts
- @@ThreadLocal@@
- 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 @@Lock@@ für explizites Locking
- Lock-Implementierung @@ReentrantLock@@
- @@lock@@, @@unlock@@, @@finally@@
- Die Aufzählung @@TimeUnit@@
* Executor
- Die Schnittstelle @@Executor@@ und @@ExecutorService@@
- Thread-Pools und Scheduled Threads
- @@ThreadPoolExecutor@@, @@RejectedExecutionHandler@@
* Scheduling
- @@java.util.Timer@@ und @@javax.swing.Timer@@
- @@ScheduledThreadPoolExecutor@@
- Scheduling im Großen: Quartz
* @@Runnable@@ und @@Callable@@
- Threads mit Ergebnissen
- @@Callable@@ und die Nutzung
- Spätere Ergebnisse mit @@Future@@
* Komfortable Thread-Koordination
- Schnittstellen @@Queue@@, @@BlockingQueue@@, @@TransferQueue@@
- Implementierungen @@LinkedBlockingQueue@@, @@DelayQueue@@, @@PriorityBlockingQueue@@
- @@CyclicBarrier@@, Vergleich mit @@join@@
- @@Exchanger@@
- @@Latch@@
* Anwendung von Threads in der Java-Bibliothek
- Thread-Kommunikation mit Piped-Stream, @@PipedReader@@, @@PipedWriter@@
- Paralleler Zugriff auf Datenstrukturen @@Vector@@ vs. @@ArrayList@@
- @@Collections.synchronizedXXX@@, Iteratoren
- Lock-Free Datenstrukturen, @@ConcurrentHashMap@@, @@ConcurrentLinkedQueue@@
- @@CopyOnWriteArrayList@@, @@CopyOnWriteArraySet@@
- Threads in Swings, der AWT-Event-Dispatching Thread
* Java 8 Streams
- Lambda-Ausdrücke
- Stream-API
- Parallele versus sequenzielle Abarbeitung
* Testen
- Umgang mit dem Nichtdeterminismus
- JUnit und @@junit.extensions.RepeatedTest@@
- JunitPerf und com.clarkware.junitperf.LoadTest
Zusätzliche Informationen
Nebenläufige Programmierung mit Threads