java thread scheduling jin zhou proseminar java thread scheduling november 2000

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

Upload: wiebke-langer

Post on 06-Apr-2015

119 views

Category:

Documents


0 download

TRANSCRIPT

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

Java Thread Scheduling

Jin Zhou

Proseminar

Java Thread SchedulingNovember 2000

Page 2: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Der Inhalt:

•Ein Übersicht über Java Scheduling

•Wann ist Scheduling wichtig

•Scheduling mit Thread Prioritäten

Java Thread SchedulingNovember 2000

Page 3: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Ein Übersicht über Java SchedulingDas 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

Page 4: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Ein Übersicht über Java SchedulingTest.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();

}}

Page 5: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Ein Übersicht über Java Scheduling

Java Thread SchedulingNovember 2000

Der jetzige Ausdruck:

Thread1...

Thread1Thread2

...Thread2Thread3

...Thread3

Aber wir wollen z.B.:

Thread1Thread2Thread2Thread3Thread1Thread2Thread3Thread3

Page 6: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Ein Übersicht über Java SchedulingDie vier Zuständen von Threads

• Initial• Runnable(currently running thread)• Blocked• Exiting

Page 7: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 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)

Page 8: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread Scheduling

November 2000

Ein Übersicht über Java SchedulingScheduling 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 AsyncReadSocke

t( new Socket(host, port));

reader. setPriority(6); reader.start();}

public void run(){doCalc();

}}

Page 9: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread Scheduling

November 2000

Ein Übersicht über Java Scheduling

Th

read

s

Default(5)

calcThread(4)

Reader(6)

KEY

Currently Running Thread

Waiting for CPU

Blocked

T1 T2 T6

T3 T4 T5

Time

Page 10: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Ein Übersicht über Java Scheduling Scheduling Threads mit gleicher Priorität

Th

read

s

Default(5)

calcThread (5)

Reader(6)

KEY

Currently Running Thread

Waiting for CPU

Blocked

T2 T3

T7

T4 T5 T6

Time

Page 11: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Ein Übersicht über Java Scheduling

T2: Priorität 5: Default -> calcThread -> NullPriorität 6: Null Blocked: Null

Priorität 5: calcThread -> Default -> NullPriorität 6: reader -> Null Blocked: Null

Priorität 5: calcThread -> Default -> NullPriorität 6: Null Blocked: reader -> Null

T3:

T4:

Scheduling Threads mit gleicher Priorität

Page 12: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Ein Übersicht über Java SchedulingPriorität Inversion

Thread 2 Thread 8

synchronized

Java Thread SchedulingNovember 2000

T1: Priorität 2: Thread 2 -> NullPriorität 8: Null Blocked: Thread 8

T2: Priorität 2: Thread 2 -> NullPriorität 8: Null Blocked: Thread 8

Page 13: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Ein Übersicht über Java SchedulingPriorität Vererbung

Thread 2 Thread 8 Thread 5

synchronized

Java Thread SchedulingNovember 2000

Page 14: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

T1: Priorität 2: Thread 2 -> NullPriorität 5: NullPriorität 8: Null Blocked: Thread 5 -> Thread 8 -> Null

Ein Übersicht über Java Scheduling

Java Thread SchedulingNovember 2000

Priorität 2: Thread 2 -> NullPriorität 5: Thread 5 -> NullPriorität 8: Null Blocked: Thread 8 -> Null

T2: Priorität 2: NullPriorität 5: Thread 5 -> NullPriorität 8: Thread 2 -> Null Blocked: Thread 8 -> Null

T3:

Priorität 2: Thread 2 -> NullPriorität 5: Thread 5 -> NullPriorität 8: Thread 8 -> Null Blocked: Null

T4:

Page 15: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Ein Übersicht über Java SchedulingRound-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 SchedulingNovember 2000

Page 16: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Wann ist Scheduling wichtigWann 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

interessantoder•Die Threads führen keine gemeinschaftliche

Aufgabe durch.

Page 17: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Wann ist Scheduling wichtig

Java Thread SchedulingNovember 2000

Threads 1 Threads nThreads 2 ……

Beispiel:

(Priorität 5)

Applet

Programm

Button

Fenster

(Priorität 6)

Page 18: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 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

Page 19: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Beispiel zu “Gerechtichkeit” (Maschine mit einer CPU)

CalcServer

Client 1 Client 2 Client 3 Client 4 Client 5

Je 5 Sekunden

Wann ist Scheduling wichtig

Page 20: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Wann ist Scheduling wichtig

Ohne Round-Robin Scheduling:

CalcServer

Client 1 Client 2 Client 3 Client 4 Client 5

5 s 10 s 15 s 20 s 25 s

Insgesamt 25 Sekunden

Java Thread SchedulingNovember 2000

Page 21: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Wann ist Scheduling wichtig

Mit Round-Robin Scheduling: (die Zeitspannung ist 2.5s)

CalcServer

Client 1 Client 2 Client 3 Client 4 Client 5

2.5 s 5 s 7.5 s 10 s 12.5 s

Insgesamt 25 Sekunden

Java Thread SchedulingNovember 2000

15 s 17.5 s 20 s 22.5 s 25 s

Page 22: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Java Thread SchedulingNovember 2000

Beispiel zu “Gerechtichkeit” (Mehr-CPU-Maschine)

CalcServer 1

Client 1 Client 2 Client 3 Client 4 Client 5

Je 5 Sekunden

CalcServer 3

CalcServer 2

CalcServer 4

Wann ist Scheduling wichtig

Page 23: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

CalcServer 1

Client 1 Client 2 Client 3 Client 4 Client 5

CalcServer 3

CalcServer 2

Wann ist Scheduling wichtig

Ohne Round-Robin Scheduling:

CalcServer 4

5 s 5 s5 s5 s 10 s

Insgesamt 10 Sekunden

Page 24: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

CalcServer 1

Client 1 Client 2 Client 3 Client 4 Client 5

CalcServer 3

CalcServer 2

Wann ist Scheduling wichtig

Mit Round-Robin Scheduling:

CalcServer 4

5 s 5 s5 s5 s

Insgesamt 6.2 Sekunden

Page 25: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Scheduling mit Thread Prioritäten

Java Thread SchedulingNovember 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.

Page 26: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Scheduling mit Thread Prioritäten

Java Thread SchedulingNovember 2000

• Benutzen der Priorität-API z.B.:

…… Thread current = Thread.currentThread(); Thread calcThread = new Thread(this); calcThread.setPriority(current.getPriority() –1); calcThread.start();……

Page 27: Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000

Zusammenfassung1. 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