Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.

Ähnliche Präsentationen


Präsentation zum Thema: "Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000."—  Präsentation transkript:

1 Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

2 Der Inhalt: Ein Ü bersicht ü ber Java Scheduling Wann ist Scheduling wichtig Scheduling mit Thread Priorit ä ten Java Thread Scheduling November 2000

3 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Das erste Beispiel: class TestThread extends Thread{ String id; public TestThread (String s){ id = s; } public void doCalc(int i){} public void run(){ for(int i = 0; i < 10; i ++){ doCalc(i); System.out.println(id); } TestThread.java

4 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Test.java public class Test{ public static void main(String args[]){ TestThread t1,t2,t3; t1 = new TestThread ( “ Thread 1 ” ); t1.start(); t2 = new TestThread ( “ Thread 2 ” ); t2.start(); t3 = new TestThread ( “ Thread 3 ” ); t3.start(); }

5 Ein Ü bersicht ü ber Java Scheduling Java Thread Scheduling November 2000 Der jetzige Ausdruck: Thread1... Thread1 Thread2... Thread2 Thread3... Thread3 Aber wir wollen z.B.: Thread1 Thread2 Thread3 Thread1 Thread2 Thread3 …

6 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Die vier Zust ä nden von Threads Initial Runnable(currently running thread) Blocked Exiting

7 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Priorit ä t von Thread : Jeder Thread im Java-Programm hat eine Priorit ä t, die durch eine positive Ganzzahl dargestellt wird. Der momentan laufende Thread hat die h ö chste Priorit ä t von allen Threads,die runnable sind. (a priority-based scheduler)

8 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Scheduling Beispiel: Threads mit verschidenen Priorit ä ten public class SchedulingExample implements Runnable{ public static void main(String args[]){ Thread calcThread = new Thread(this); calcThread.setPriority(4); calcThread.start(); AsyncReadSocket reader = new AsyncReadSocket( new Socket(host, port)); reader. setPriority(6); reader.start(); } public void run(){ doCalc(); }

9 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Threads Default(5) calcThread (4) Reader(6) KEY Currently Running Thread Waiting for CPU Blocked T1T2T6T3T4T5 Time

10 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling Scheduling Threads mit gleicher Priorität Threads Default (5) calcThread (5) Reader (6) KEY Currently Running Thread Waiting for CPU Blocked T2T3T7T4T5T6 Time

11 Java Thread Scheduling November 2000 Ein Ü bersicht ü ber Java Scheduling T2: Priorit ä t 5: Default -> calcThread -> Null Priorit ä t 6: Null Blocked: Null Priorit ä t 5: calcThread -> Default -> Null Priorit ä t 6: reader -> Null Blocked: Null Priorit ä t 5: calcThread -> Default -> Null Priorit ä t 6: Null Blocked: reader -> Null T3: T4: Scheduling Threads mit gleicher Priorität

12 Ein Ü bersicht ü ber Java Scheduling Priorität Inversion Thread 2Thread 8 synchronized Java Thread Scheduling November 2000 T1: Priorit ä t 2: Thread 2 -> Null Priorit ä t 8: Null Blocked: Thread 8 T2: Priorit ä t 2: Thread 2 -> Null Priorit ä t 8: Null Blocked: Thread 8

13 Ein Ü bersicht ü ber Java Scheduling Priorität Vererbung Thread 2Thread 8Thread 5 synchronized Java Thread Scheduling November 2000

14 T1: Priorit ä t 2: Thread 2 -> Null Priorit ä t 5: Null Priorit ä t 8: Null Blocked: Thread 5 -> Thread 8 -> Null Ein Ü bersicht ü ber Java Scheduling Java Thread Scheduling November 2000 Priorit ä t 2: Thread 2 -> Null Priorit ä t 5: Thread 5 -> Null Priorit ä t 8: Null Blocked: Thread 8 -> Null T2: Priorit ä t 2: Null Priorit ä t 5: Thread 5 -> Null Priorit ä t 8: Thread 2 -> Null Blocked: Thread 8 -> Null T3: Priorit ä t 2: Thread 2 -> Null Priorit ä t 5: Thread 5 -> Null Priorit ä t 8: Thread 8 -> Null Blocked: Null T4:

15 Ein Ü bersicht ü ber Java Scheduling Round-Robin Scheduling Auf der Maschine mit Round-Robin Scheduling läuft ein Thread nur für eine gewisse Zeitspanne. Und wird dann zum Ende der Prioritätliste angefügt. Auf der Maschine ohne Round-Robin Scheduling läuft der currently running thread immer, bis er blockiert wird oder ein Thread mit höherer Priorität ausführbar wird. Java Thread Scheduling November 2000

16 Java Thread Scheduling November 2000 Wann ist Scheduling wichtig Wann interessieren wir uns f ü r das Scheduling? Nur wenn folgende erf ü llt sind: Es gibt ein oder mehr CPU-intensive Threads in einem Programm und entweder Zwischenergebnisse der Kalkulationen sind interessant oder Die Threads führen keine gemeinschaftliche Aufgabe durch.

17 Wann ist Scheduling wichtig Java Thread Scheduling November 2000 Threads 1Threads nThreads 2 …… Beispiel: (Priorit ä t 5) Applet Programm Button Fenster (Priorit ä t 6)

18 Java Thread Scheduling November 2000 Round-Robin Scheduling und „ Gerechtichkeit“ 1. Zwischenergebnisse wichtig: das Round-Robin Scheduling am gerechtesten. 2. Endergebnisse wichtig: das Round-Robin Scheduling auf der Maschine mit einer CPU nicht am besten. 3. Auf Maschinen mit mehreren CPUs : das Round-Robin Scheduling ist oft besser als anderes Scheduling. Wann ist Scheduling wichtig

19 Java Thread Scheduling November 2000 Beispiel zu “Gerechtichkeit” (Maschine mit einer CPU) CalcServer Client 1Client 2Client 3Client 4Client 5 Je 5 Sekunden Wann ist Scheduling wichtig

20 Ohne Round-Robin Scheduling: CalcServer Client 1Client 2Client 3Client 4Client 5 5 s10 s15 s20 s25 s Insgesamt 25 Sekunden Java Thread Scheduling November 2000

21 Wann ist Scheduling wichtig Mit Round-Robin Scheduling: (die Zeitspannung ist 2.5s) CalcServer Client 1Client 2Client 3Client 4Client 5 2.5 s5 s7.5 s10 s12.5 s Insgesamt 25 Sekunden Java Thread Scheduling November 2000 15 s17.5 s20 s22.5 s25 s

22 Java Thread Scheduling November 2000 Beispiel zu “Gerechtichkeit” (Mehr-CPU-Maschine) CalcServer 1 Client 1Client 2Client 3Client 4Client 5 Je 5 Sekunden CalcServer 3CalcServer 2CalcServer 4 Wann ist Scheduling wichtig

23 CalcServer 1 Client 1Client 2Client 3Client 4Client 5 CalcServer 3CalcServer 2 Wann ist Scheduling wichtig Ohne Round-Robin Scheduling: CalcServer 4 5 s 10 s Insgesamt 10 Sekunden

24 CalcServer 1 Client 1Client 2Client 3Client 4Client 5 CalcServer 3CalcServer 2 Wann ist Scheduling wichtig Mit Round-Robin Scheduling: CalcServer 4 5 s Insgesamt 6.2 Sekunden

25 Scheduling mit Thread Priorit ä ten Java Thread Scheduling November 2000 Prioritäten in der Java API 3 Konstanten (static final) : Thread.MIN_PRIORITY=1 : Die kleinste Priorität, die ein Thread haben kann. Thread.MAX_PRIORITY=10 : Die größte Priorität, die ein Thread haben kann. Thread.NORM_PRIORITY=5 : Die Standartriorität. 2 wichtige Methoden void setPriority(int priority) : Setzen der Priorität des gegebenen Threads. int getPriority(int priority) : Lesen der Priorität des gegebenen Threads.

26 Scheduling mit Thread Priorit ä ten Java Thread Scheduling November 2000 Benutzen der Priorität-API z.B.: …… Thread current = Thread.currentThread(); Thread calcThread = new Thread(this); calcThread.setPriority(current.getPriority() –1); calcThread.start(); ……

27 Zusammenfassung 1. Ein Ü bersicht ü ber Java Scheduling Priorit ä t von Thread Scheduling Threads mit gleicher Priorit ä t Priorit ä t Inversion und Vererbung Round-Robin Scheduling 2. Wenn Scheduling ist wichtig Wann interessieren wir uns f ü r das Scheduling Round-Robin Scheduling und „Gerechtichkeit“ 3. Scheduling mit Thread Priorit ä ten Priorität in der Java API Benutzung der Priority-API Java Thread Scheduling November 2000


Herunterladen ppt "Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000."

Ähnliche Präsentationen


Google-Anzeigen