Thread-Prioritäten – 1

„Lassen Sie uns unsere Lektion fortsetzen. Was sind Thread-Prioritäten und warum werden sie benötigt?

„Bei Problemen in der realen Welt kann die Bedeutung der von verschiedenen Threads ausgeführten Arbeit stark variieren. Das Konzept der Thread-Priorität wurde entwickelt, um diesen Prozess zu steuern. Jeder Thread hat eine Priorität, die durch eine Zahl von 1 bis 10 dargestellt wird.“

„10 ist die höchste Priorität.“

„1 ist der niedrigste Wert.“

„Wenn keine Priorität angegeben ist, erhält ein Thread Priorität 5 (normal).“

Die Priorität eines Threads hat keinen wesentlichen Einfluss auf dessen Arbeit, sondern ist eher eine Empfehlung. Wenn mehrere schlafende Threads ausgeführt werden müssen, startet die Java-Maschine zuerst einen Thread mit einer höheren Priorität.

„Die Java-Maschine verwaltet Threads nach eigenem Ermessen. Threads mit niedriger Priorität bleiben nicht im Leerlauf. Sie erhalten einfach weniger Ausführungszeit als andere, werden aber trotzdem ausgeführt.“

„In den meisten Fällen werden Threads immer mit der gleichen Priorität ausgeführt. Der Versuch, einem Thread mehr als anderen zu geben, ist oft ein Hinweis auf Architekturprobleme in einem Programm.“

„Whoa. Und ich hatte schon davon geträumt, meinen Threads die höchste Priorität zuzuweisen, damit sie zehnmal so viel leisten.“

„Es stellt sich heraus, dass die Situation hier kurz vor dem Abschluss steht: Ein Thread mit einer hohen Priorität kann und wird besser funktionieren, aber vielleicht auch nicht – es gibt keine Garantie.“

„Sagen Sie, wie ändere ich die Priorität eines Threads?“

„Es ist ganz einfach. Die Thread-Klasse verfügt über zwei Methoden:“

Methode Beschreibung
void setPriority(int newPriority)
Legt eine neue Priorität fest
int getPriority()
Gibt die aktuelle Thread-Priorität zurück

„Die Thread-Klasse hat außerdem drei Konstanten:“

public final static int MIN_PRIORITY = 1;

public final static int NORM_PRIORITY = 5;

public final static int MAX_PRIORITY = 10;

„Lassen Sie mich raten. MIN_PRIORITY ist die minimale Priorität, MAX_PRIORITY ist die maximale und NORM_PRIORITY ist die Standardpriorität?“

„Ja, genau. Sie können den Code schreiben, der die höchste Thread-Priorität zuweist.“

„Gibt es hier einen Trick? So etwas in der Art?“

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

„Das stimmt. Nichts Kompliziertes, oder?“

„Ja. Können Sie die Priorität nach dem Start eines Threads festlegen/ändern? Oder ist es wie bei setDaemon, wo Sie den Wert festlegen müssen, bevor der Thread gestartet wird?“

„Die Priorität kann nach dem Starten eines Threads geändert werden. Wie ich bereits sagte, führt dies zu keinen dramatischen Änderungen.“

„Nun, das war ein kleines, aber interessantes Thema. Danke, Ellie.“