Sie befinden sich hier: Home » Seminare » Java » JAVACON
Nebenläufige Programmierung mit Threads
Kursziele
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 in Java 5.0 eingeführten neuen Klassen und Schnittstellen
aus dem Paket java.util.concurrent und Unterpaketen kennen, mit denen Thread-Koordination
nunmehr komfortabel und effektiv möglich ist.
Zielgruppe | Empfohlene Dauer | |
| Software-Entwickler | 2 Tage, insgesamt 12 Zeitstunden |
Inhalte
![[LOGO]](../../images/seminare/logos/java.png)
- Wiederholung zentraler Begriffe
- 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()undnotify(),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
LockundReentrantLock- Das Paket
java.util.concurrent.locks
- Die Schnittstelle
Lockfür explizites Locking
- Lock-Implementierung
ReentrantLock
lock(),unlock(),finally
- Die Aufzählung
TimeUnit
- Das Paket
- Executor
- Die Schnittstelle
ExecutorundExecutorService
- Thread-Pools und Scheduled Threads
ThreadPoolExecutor,RejectedExecutionHandler
- Die Schnittstelle
- Scheduling
java.util.Timerundjavax.swing.Timer
ScheduledThreadPoolExecutor
- Scheduling im Großen: Quartz
RunnableundCallable- Threads mit Ergebnissen
Callableund die Nutzung
- Spätere Ergebnisse mit
Future
- Komfortable Thread-Koordination
Queue, Blocking-Queue,LinkedBlockingQueue,DelayQueue,PriorityBlockingQueue
CyclicBarrier, Vergleich mitjoin()
Exchanger
Latch
- Anwendung von 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
- Thread-Kommunikation mit Piped-Stream,
- Testen
- Umgang mit dem Nichtdeterminismus
- JUnit und
junit.extensions.RepeatedTest
- JunitPerf und com.clarkware.junitperf.LoadTest
Voraussetzungen
Der Kurs ›Java Grundlagen‹, ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.
Seminarunterlagen
Deutschsprachige Unterlagen (Kopien der Folien), Zertifikat.
Software
Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse 3.4 eingesetzt (Paket Eclipse IDE for Java EE Developers). Auf Wunsch auch NetBeans oder andere Entwicklungsumgebungen.
Schlagwörter | Unternehmen | |
|