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
Software-EntwicklerEmpfohlene Dauer
2 Tage, insgesamt 12 ZeitstundenInhalte
![[LOGO]](../../images/seminare/logos/java.png)
- Wiederholung zentraler Begriffe
- Notwendigkeit von nebenläufigen Programmen (Mehrkernprozessoren)
- Erzeugen von Threads
- Die SchnittstelleRunnable
- Lebenszyklus von Threads, Starten und Stoppen, Interrupt
- Auf das Ende mitjoin()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 assoziierteClassLoader - 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 Paketjava.util.concurrent.locks
- Die SchnittstelleLockfür explizites Locking
- Lock-ImplementierungReentrantLock
-lock(),unlock(),finally
- Die AufzählungTimeUnit- Executor
- Die SchnittstelleExecutorundExecutorService
- Thread-Pools und Scheduled Threads
-ThreadPoolExecutor,RejectedExecutionHandler - Scheduling
-java.util.Timerundjavax.swing.Timer
-ScheduledThreadPoolExecutor
- Scheduling im Großen: Quartz RunnableundCallable
- Threads mit Ergebnissen
-Callableund die Nutzung
- Spätere Ergebnisse mitFuture- 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 DatenstrukturenVectorvs.ArrayList
-Collections.synchronizedXXX(), Iteratoren
- Lock-Free Datenstrukturen,ConcurrentHashMap,ConcurrentLinkedQueue
-CopyOnWriteArrayList,CopyOnWriteArraySet
- Threads in Swings, der AWT-Event-Dispatching Thread - Testen
- Umgang mit dem Nichtdeterminismus
- JUnit undjunit.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 6 oder andere Entwicklungsumgebungen.
Schlagwörter
Unternehmen
- Sun Microsystems
![Zu einem Bookmark-Anbieter hinzufügen [Addthis]](../../images/bookmarks/addthis.gif)
![Zu Google Bookmarks hinzufügen [Google Bookmarks]](../../images/bookmarks/google.png)
![Zu Yahoo! Bookmarks hinzufügen [Yahoo! Bookmarks]](../../images/bookmarks/yahoo.png)
![Zu Delicius hinzufügen [Delicius]](../../images/bookmarks/delicious.png)
![Zu Mister Wong hinzufügen [Mister Wong]](../../images/bookmarks/misterwong.png)