Java Threads Scheduling Lei Chen November 2000 Proseminar.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
Rekursive Grafiken Reklursive Grafiken.
Zusammenfassung des Kapitels 8
3 Prozessverwaltung  sieht einen Prozess als Objekt der Verwaltung,
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Java News & Music Der Chat
Threads Richard Göbel.
Binäre Bäume Richard Göbel.
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Objektorientierte Programmierung JDK-Klassenbibliothek
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Thema: Fibonacci-Zahlen
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Client-Server-Architektur
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Proseminar Java Threads. Deadlock und Fairness 1. Deadlock 2. Lockstarvation.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Beispielanwendung von Java Threads
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
Dr. Wolfram Amme, Das Thread-Konzept in objektorientierten Programmiersprachen, Informatik II, FSU Jena, SS Thread-Konzept in objektorientierten.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Praktische Informatik 1
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
Schleifen mit der Turtle
 Präsentation transkript:

Java Threads Scheduling Lei Chen November 2000 Proseminar

Jave Thread Scheduling Popular--Scheduling Implementierung Native--Scheduling Unterst ü tzung Andere Thread--Scheduling Methoden Zusammenfassung

Teil I Popular-Scheduling Implementierung

1.Green Threads Was ist ein Green-Threads-Modell Green Threads sind Benutzer-Ebene-Threads Jeder Zeit darf einen einzigen Thread ausf ü hren Green-Threads-Scheduling Wann wechselt die virtuelle Maschine den laufenden Thread? F ü r Implementierung von Green-Threads wird empfohlen, Priorit ä t Vererbung zu benutzen Was wird passieren, wenn ein Thread eine Datei von einem leeren Socket lesen will? Realisierung im Betriebssystem mit „ asynchonous I/O “ Realisierung im Betriebssystem ohne „ asynchonous I/O “ Ein Beispiel f ü r blockierten Thread Popular--Scheduling Implementierung

Was ist ein Green-Threads Modell Processor Betriebssystem(BS) JVM BS-Thread Java-Thread Stack Programm z ä hler Bookkeeping Info. … … Stack Programm z ä hler Bookkeeping Info. JVM: Java Virtuelle Maschine

Threads auf Benutzer- und System- Ebene Threads Meisten Betriebssysteme haben zwei logische Teile: System-Ebene und Benutzer-Ebene Was ist ein Systemaufruf Ein Systemaufruf Beispiel Vor- und Nachteil von dieser logischen Teilung Vorteil: Schutz von Benutzerfehler Nachteil: Aufruf des Betriebssystems Popular — Scheduling Implementierung

Ein Systemaufruf Beispiel Ein Programm Der Kern des Betriebssystem Datei Benutzer Ebene System Ebene Systemaufru f lesen Popular — Scheduling Implementierung

Benutzer-Ebene und System-Ebene Betriebssystem Benutzer-EbeneSystem-Ebene BS-Threads verwaltet ohne Systemaufrufe BS-Thread werden im BS-Kern verwaltet Beispiele Popular — Scheduling Implementierung

BS-Threads auf Benutzerebene JVM Der Kern des Betriebssystem Datei Benutzerebene Systemebene lesen Popular — Scheduling Implementierung BS-Bibliotheken Anwendungsebene BS-Ebene

public class LockTest { object someObject=new Object( ); class ThreadA extends Thread { ThreadA( ) { setPriority(Thread.Max_PRIORITY);} // mit Priorit ä t 10; public void run( ) { synchronized(someObject) { wait( );} someObject.methodA( ); } Popular--Scheduling Implementierung Ein Implementierungsbeispiel von green-Threads-Scheduling

class ThreadB extends Thread { ThreadB( ) { setPriority(Thread.NORM_PRIORITY( ); } // mit Priorit ä t 5; public void run( ) { synchronized(someObject) { someObject.notify( );} someObject.methodB( ); } static void main(String args[ ] ) { new ThreadA( ).start( ); new ThreadB( ).start( ); } Popular--Scheduling Implementierung

2.Windows-Native-Threads F ü r jeden Java-Thread gibt es einen entsprechenden Thread vom Betriebssystem Jeder Windows-Native-Thread kann als ein Proze ß angesehen werden Verschiedene Implementierung der Java Virtuelle Maschine auf den Windows Plattformen Schwierigkeit der Windows native Threads Implementierung Viele Threads d ü rfen gleichzeitig in vielen CPUs ausf ü hren Popular--Scheduling Implementierung

Windows-Native-Threads (2) Windows-Native-Threads Scheduling Abbildungstabelle von Java-Thread Priort ä ten auf Win32- Plattform 7 Windows Threads Priorit ä ten f ü r 11 Java Threads Priorit ä ten 5 Scheduling Klassen f ü r 7 Windows Threads Priorit ä ten Andere wichtige Faktoren, die Thread-Priorit ä t affektieren Priorit ä t Vererbung Timeslice: Jeder Thread mit der gleichen Priorit ä t kriegt ungef ä hr gleiche CPU Zeit Priorit ä t Hochschieben Popular--Scheduling Implementierung

Abbildungstabelle von Java-Thread Priortäten auf Betriebssystem(Win32- Plattform ) Java-Priorit ä tWindows 95/NT Priorit ä t 0THREAD_PRIORITY-IDLE 1 (Thread.MIN_PRIORITY)THREAD_PRIORITY-LOWEST 2 3THREAD_PRIORITY-BELOW_NORMAL 4 5 (Thread.NORM_PRIORITY)THREAD_PRIORITY-NORMAL 6THREAD_PRIORITY-ABOVE_NORMAL 7 8THREAD_PRIORITY-HIGHEST 9 10 (Thread.MAX_PRIORITY)THREAD_PRIORITY-TIME-CRITICAL Popular--Scheduling Implementierung

3.Solaris-Native-Threads Es ist ein Zwei-Ebenen-Modell: Benutzerebene-Threads-Modell: dem Betriebssystemkern unbekannt System-Ebene-Threads (LWPs, lightweight processes) : dem Betriebssystemkern bekannt Viele Threads in vielen CPUs d ü rfen gleichzeitig ausf ü hren Scheduling-Implementierung des Solaris-Native-Threads Das Betriebssystem g í bt jedem LWP einen timeslice Die Wirkung des timeslice(4 Beispiele) wieviele LWPs(Lightweight-Process) hat die virtual Maschine? Die virtuelle Maschine beginnt immer mit einem LWP Wenn das LWP blockiert ist, und es noch wartende Threads gibt, dann wird das Betriebssystem ein neues LWP erzeugen [LWPs]=[gleichzeitige blockierte Threads] +1 Mit der Methode thr_setconcurrency() k ö nnen wir mehre LWPs erzeugen Popular--Scheduling Implementierung

Solaris-Native-Threads Modell Processor JVM Solaris Thread Solaris Thread Java Thread Java Thread … … JVM: Java Virtuelle Maschine Processor … LWP AnwendungBSBS-Kern … Priority-based Not timesliced timesliced

Die Wirkung der timeslice in Solaris-Native-Threads-Modell LWP1LWP2 Solaris-Thread1 mit Priorit ä t 5 LWP: lightweight processes Beispiel1 System-Ebene Solaris-Thread2 mit Priorit ä t 5 Solaris-Thread3 mit Priorit ä t 5

Die Wirkung der timeslice in Solaris-Native-Threads-Modell LWP1LWP2 LWP: lightweight processes Beispiel2 System-Ebene Solaris-Thread1 mit Priorit ä t 5 Solaris-Thread2 mit Priorit ä t 6 Solaris-Thread3 mit Priorit ä t 4

Teil 2 Native-Scheduling- Unterst ü tzung

Anbindung von Native Scheduling in Java Realisierung durch Klasse CPUSupport Implementeriungen f ü r Solaris und Windows Native-Scheduling-Unterst ü tzung Die Unterst ü tzung von native scheduling

Class CPUSupport public class CPUSupport{ static boolean loaded = false; static void CPUSupport{ try { System.loadLibrary(„CPUSupportWin“); loaded = true;} catch (Error e) { try { System.loadLibrary(„CPUSupportSolaris“); loaded = true; } catch (Error e) { System.err.println(„Warning: No platform library for CPUSupport“); } } Native-Scheduling-Unterst ü tzung

private static native int getConcurrencyN( ); public static int getConcurrency ( ) { if (!loaded) //Assume green threads return 1; return getConcurrencyN( ); } private static native void setConcurrencyN(int i ); public static void setConcurrency (int n ) { if (loaded) setConcurrencyN(n ); }

private static native int getNumProcessorsN( ); public static int getNumProcessors ( ) { if (!loaded)//Assume green threads return 1; return getNumProcessorsN( ); } getConcurrencyN, setConcurrencyN, getNumProcessorsN werden auf die entsprechenden Betriebssystemroutinen thr_getConcurrency, thr_setConcurrency und sysconf(_SC_NPROCESSORES_ONLN) von Solaris abgebildet.

Teil III Andere Thread-Scheduling Methoden

Eine Ü bersicht ü ber andere Thread-scheduling Methoden Die Methode suspend() und resume() void suspend() (nicht von Java2 unterst ü tzt):Verhindern ein Thread am unendlichen Laufen void resume() (nicht von Java2 unterst ü tzt):Erlauben einem Thread nach suspend wieder zu laufen Der suspended Zustand ist nicht gleich dem blockierten Zustand Eine Anwendung mit den Methoden suspend() und resume() Andere Thread-Scheduling Methoden

Eine Anwendung mit den Methoden suspend() und resume() import java.applet.Applet; import java.awt.*; public class Fractal extends Applet implements Runnable{ Thread t; public void start() { if (t==null){ t=new Thread(this); t.setPriority(Thread.currentThread().getPriority()-1); t.start(); } else t.resume(); }

public void stop() { t.suspend(); } public void run() { // Do calculations, occadionally calling repaint() } public void paint (Graphics g) { // Paint the completed sections if the fractal } Eine Anwendung mit den Methoden suspend() und resume()

Die Methode yield() Die Methode yield() erlaubt anderem Thread mit gleicher Priorit ä t zu laufen (Verzichtet auf CPU) Eine static Methode, beeinflusst nur den momentan laufenden Thread (ein Beispiel) Die Unterschied zwischen den Methode yield() und Methode suspend() Nach der yield() Methode bleibt der Thread original runnable Zustand, nicht wie bei der die suspend() Methode: der Thread ver ä ndert sich in einem suspend Zustand Was passiert, wenn yield() ausgef ü hrt wird? Es kann ein anderer Thread mit gleicher Priorit ä t ausgef ü hrt werden. Wenn es keinen Thread in Wartliste gibt, wird der Thread fortgesetzt. Andere Thread-Scheduling Methoden

Ein Beispiel mit der Methode yield() public class YieldApplet extends Applet implements Runnable{ Thread t; public void init() { t=new Thread(this); } public void paint (Graphics g){ t.yield(); } Andere Thread-Scheduling Methoden

Wie realisiert die Methode yield() Thread1 (pri. 5) Thread2 (pri. 5) Thread n (pri. 5) Thread1 (pri. 5) static void yield() currently running Thread Warteliste mit gleicher Priorit ä t... Andere Thread-Scheduling Methoden

Die Methode Daemon() Daemon Threads void setDaemon(boolean b) Wenn b true ist, ist das Thread als ein daemon-Thread ; wenn b false ist, ist das Thread als ein user-Thread boolean isDaemon() Wenn das Thread ein daemon-Thread ist, gibt true zuruck; wenn ein user-Thread ist, gibt false zur ü ck Andere Thread-Scheduling Methoden

Zusammenfassung Alle Methoden in diesem Kapitel : void setPriority(int priority) ; int getPriority() ; void suspend() ; void resume() ; static void yield() ; void setDaemon(boolean b) ; boolean isDaemon() ; Zusammenfassung