Nebenläufige Programmierung mit Threads

Empfohlene Schulungsdauer: 2 Tage, insgesamt 16 Unterrichtsstunden à 45 Minuten

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. Im Ausblick führt das Seminar an Beispielen das Fork/Join-Framework vor, was Teil von Java 7 ist.

Zielgruppe

Software-Entwickler

Kursvoraussetzungen

Der Kurs ›Java Grundlagen‹, ›Java für Umsteiger‹ oder vergleichbare Kenntnisse.

Seminarinhalte

[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

Schulungsunterlagen

Deutschsprachige Unterlagen (Kopien der Folien), Zertifikat.

Eingesetze Seminar-Software

Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse 3.6 eingesetzt (Paket ›Eclipse IDE for Java EE Developers‹). Auf Wunsch auch NetBeans 6 oder andere Entwicklungsumgebungen (IntelliJ IDEA, Oracle JDeveloper).

Schlagwörter

Unternehmen

Weiterführende Seminare

Eclipse IDE, Oberflächen mit Swing und JFC, Neuerungen in Java 5, Datenbankanbindung über JDBC, Java und XML, JavaServer Pages (JSP) und Servlets, Java 2 Platform Enterprise Edition (J2EE) 1.4, Java Platform, Enterprise Edition (Java EE) 5, Enterprise JavaBeans (EJB 2.1) mit XDoclet, Enterprise JavaBeans (EJB) 3 und Persistence API, Spring-Framework, OR-Mapping mit Hibernate und JPA, Java ME: Programmierung mobiler Endgeräte, Sun Certified Java Programmer (SCJP), Refactoring, Design Patterns (Entwurfsmuster) in Java, Effektiv Java programmieren

[Addthis] [Google Bookmarks] [Yahoo! Bookmarks] [Delicius] [Mister Wong]

 

[Nach oben]