Draadprioriteiten - 1

"Laten we doorgaan met onze les. Wat zijn threadprioriteiten en waarom zijn ze nodig?

"Bij problemen in de echte wereld kan het belang van het werk dat door verschillende threads wordt uitgevoerd sterk variëren. Het concept van threadprioriteit is gecreëerd om dit proces te beheersen. Elke thread heeft een prioriteit die wordt weergegeven door een nummer van 1 tot 10."

"10 heeft de hoogste prioriteit."

"1 is de laagste."

"Als er geen prioriteit wordt gegeven, krijgt een thread prioriteit 5 (normaal)."

De prioriteit van een thread heeft geen significante invloed op zijn werk, maar is eerder een aanbeveling. Als er meerdere slapende threads zijn die moeten worden uitgevoerd, start de Java-machine eerst een thread met een hogere prioriteit.

"De Java-machine beheert threads naar eigen goeddunken. Threads met een lage prioriteit worden niet aan hun lot overgelaten. Ze krijgen gewoon minder uitvoeringstijd dan andere, maar ze worden nog steeds uitgevoerd."

"In de meeste gevallen worden threads altijd met dezelfde prioriteit uitgevoerd. Een poging om één thread meer te geven dan andere is vaak een indicatie van architectonische problemen in een programma."

"Ho. En ik had er al van gedroomd om de hoogste prioriteit aan mijn threads toe te kennen, zodat ze 10 keer zoveel zouden doen."

"Het blijkt dat de situatie hier bijna rond is: een thread met een hoge prioriteit kan en zal meer werken, maar misschien ook niet - er is geen garantie."

"Zeg, hoe verander ik de prioriteit van een thread?"

"Het is heel eenvoudig. De klasse Thread heeft twee methoden:"

Methode Beschrijving
void setPriority(int newPriority)
Stelt een nieuwe prioriteit in
int getPriority()
Retourneert de huidige threadprioriteit

"De klasse Thread heeft ook drie constanten:"

openbare definitieve statische int MIN_PRIORITY = 1;

openbare definitieve statische int NORM_PRIORITY = 5;

openbare definitieve statische int MAX_PRIORITY = 10;

"Laat me raden. MIN_PRIORITY is de minimale prioriteit, MAX_PRIORITY is de maximale en NORM_PRIORITY is de standaardprioriteit?"

"Ja, precies. Je kunt de code schrijven die de hoogste threadprioriteit toekent."

"Is hier een truc? Iets als dit?"

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

"Dat klopt. Niets ingewikkelds, toch?"

"Ja. Kun je de prioriteit instellen/wijzigen nadat een thread is gestart? Of is het net als setDaemon, waar je de waarde moet instellen voordat de thread wordt gestart?"

"De prioriteit kan worden gewijzigd nadat een thread is gestart. Zoals ik al zei, leidt dit niet tot dramatische veranderingen."

'Nou, dat was een klein maar interessant onderwerp. Bedankt, Ellie.'