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]
  • 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() 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
    • Queue, Blocking-Queue, 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
  • 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

  
  • Sun Microsystems