Thread Programmierung in Java VO Aktuelle Programmiersprache • • • • • • Begriffserklärung, Anwendung Implementierung in Java Codebeispiele Testprogramm Kritische Abschnitte Monitor, Semaphore Andreas Griesser Thomas Aichholzer 1 Threads • Ein Thread wird auch leichtgewichtiger Prozess genannt. • Durch den Einsatz von Threads („Programmfäden“) kann man den parallelen Zugriff auf Ressourcen verwirklichen. new start() Prozess Threads wait() sleep() suspend() blocked runnable stop() dead non-runnable notify() slept resume() unblocked 2 Multithreading • Multithreading bedeutet nun, dass es möglich ist, mehrere Threads parallel laufen zu lassen (bei nur einem Prozessor ist dies natürlich keine echte Parallelität). 3 Single vs. Multithreading • Single-Threaded Methode c Methode a Methode b t • Multi-Threading Methode c Methode c Methode a Methode b t 4 Multithreading in Hardware • Hyperthreading - virtuelle Prozessoren • Betriebssystemabhängig – ab XP oder Kernel 2.4.18 • Unbenutzte Ausführungseinheiten werden belegt • Software muss entsprechend geschrieben werden 5 Multithreading – Probleme • Threads benutzen gleiche Ressourcen und Daten. Bei Zugriff auf gemeinsam genutzte Ressourcen müssen Schutzmechanismen eingebaut werden. • Threads, die mehrere Ressourcen gleichzeitig benötigen, können sich gegenseitig blockieren (Deadlock) • Nicht jede Virtual Machine verteilt CPU-Zeit gerecht, laufende Threads sollten anderen eine Chance geben • Mögliche Zustände oft schwer verständlich, da Parallelität nicht gerade intuitiv verständlich 6 Thread Programmierung in Java Vielen Dank für ihre Aufmerksamkeit! Fragen? Andreas Griesser [email protected] Thomas Aichholzer [email protected] 7