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

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

Apr 06, 2015

Download

Documents

Wiebke Langer
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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