Multithreading Java-Multithreading Jordan Pentchev 1 Einleitung • Was ist Threads eigenständiges Programm die sequenzielle Folge von Instruktions- ausführt • Nebenläufige Ausführung von Routinen auf einem gemeinsamen Datensegment. Java-Multithreading Jordan Pentchev 2 Threads in Java • In der JVM laufen alle Java-Programme als Threads • Ein Thread in Java auch ein Objekt. • Mit Hilfe der Klasse Thread der Java-API lassen sich auf zwei unterschiedliche Weisen weitere Threads kreieren. Java-Multithreading Jordan Pentchev 3 Zustände eines Threads Java-Multithreading Jordan Pentchev 4 Betriebsystem Prozess 1 Prozess 2 Thread 1 Speicher Thread N Java-Multithreading Jordan Pentchev 5 Anhalten von Threads • Mit dem Methode Thread.stop(); kann ein Thread angehalten werden Leider ist diese Methode depricated und kann nicht mehr ab Version 1.2 benutzen Java-Multithreading Jordan Pentchev 6 Threads Intrrupt • Die Methoden: interrupt() isInterrupted() interrupted() Java-Multithreading Jordan Pentchev 7 Thread Sysnchronisation • Schlüsselwort synchronized Synchronisieren durch aufrufen der Methode synchronized(Object) Java-Multithreading Jordan Pentchev 8 Monitoren • Synchronisation von Nebenläufigen Prozesse Durch Kapselung im kritische Beriech. Methode synchrinized(); Monitoren min synchrinized Java-Multithreading Jordan Pentchev 9 Nebenläufigkeit • Parallel ausführjung von mehreren Threads • Gleichzeitig auf selbe Ressourcen zu greifen • Bei nicht synchronisierte Threads kann es vorkommen dass sie sich gegenseitig blockieren. Java-Multithreading Jordan Pentchev 10 Monitoren • Methoden – Wait() – Notify() Java-Multithreading Jordan Pentchev 11 Deadlock • Zustände als Folge nicht ausreichende Synchronisation • deadlock Java-Multithreading Jordan Pentchev 12 Prioritäten • Threads verwaltjung Prioritäten unter Java: java.lang.Thread public static final int MAX_PRIORITY 10 public static final int MIN_PRIORITY 1 public static final int NORM_PRIORITY 5 Beispiel Java-Multithreading Jordan Pentchev 13 Dämon Threads • Jedes Java-Programm hat Daemon-Threads. – Garbage Collector als Dämon-Thread Dämon-Threads laufen in Hintergrund sind so wohl von der System als auch von der Programmierer einsetzbar wichtig Ihrer Status wird nicht geprüft bei beendigjung das Programm, deshalb muss jeder Dämon-Thread beendigjung mitten in der run()-Methode eintreten Java-Multithreading Jordan Pentchev 14 • Als letzte Beispiel Die denkende Philosophen Java-Multithreading Jordan Pentchev 15 • Verwendete Literatur: – http://www.dpunkt.de/java/ – http://java.sun.com/ – Handbuch der Java Programmierung Guido Krüger Java-Multithreading Jordan Pentchev 16 Ende • Danke für die Aufmerksamkeit! Java-Multithreading Jordan Pentchev 17