Trådprioriteter - 1

"Lad os fortsætte vores lektion. Hvad er trådprioriteter, og hvorfor er de nødvendige?

"I problemer i den virkelige verden kan vigtigheden af, at arbejdet udføres af forskellige tråde variere meget. Konceptet med trådprioritet blev skabt for at kontrollere denne proces. Hver tråd har en prioritet repræsenteret med et tal fra 1 til 10."

"10 er den højeste prioritet."

"1 er den laveste."

"Hvis der ikke gives prioritet, får en tråd prioritet 5 (normalt)."

En tråds prioritet påvirker ikke dens arbejde væsentligt, men er i stedet mere en anbefaling. Hvis der er flere sovende tråde, der skal køre, starter Java-maskinen først en tråd med højere prioritet.

"Java-maskinen administrerer tråde, som den finder passende. Tråde med lav prioritet vil ikke blive overladt til inaktive. De vil simpelthen modtage mindre eksekveringstid end andre, men de vil stadig blive eksekveret."

"I de fleste tilfælde udføres tråde altid med samme prioritet. Et forsøg på at give en tråd mere end andre er ofte en indikation af arkitektoniske problemer i et program."

"Wow. Og jeg havde allerede drømt om at tildele mine tråde højeste prioritet, så de ville gøre 10 gange så meget."

"Det viser sig, at situationen her er tæt på at afslutte: en tråd med høj prioritet kan og vil fungere mere, men måske ikke - der er ingen garanti."

"Sig, hvordan ændrer jeg en tråds prioritet?"

"Det er meget nemt. Thread-klassen har to metoder:"

Metode Beskrivelse
void setPriority(int newPriority)
Sætter en ny prioritet
int getPriority()
Returnerer den aktuelle trådprioritet

"Trådklassen har også tre konstanter:"

offentlig endelig statisk int MIN_PRIORITY = 1;

offentlig endelig statisk int NORM_PRIORITY = 5;

offentlig endelig statisk int MAX_PRIORITY = 10;

"Lad mig gætte. MIN_PRIORITY er minimumsprioriteten, MAX_PRIORITY er maksimum, og NORM_PRIORITY er standardprioriteten?"

"Ja, præcis. Du kan skrive den kode, der tildeler den højeste trådprioritet."

"Er der et trick her? Sådan noget?"

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

"Det er korrekt. Ikke noget kompliceret, vel?"

"Jep. Kan du indstille/ændre prioriteten efter en tråd starter? Eller er det ligesom setDaemon, hvor du skal indstille værdien før tråden startes?"

"Prioriteten kan ændres efter en tråd er startet. Som jeg allerede har sagt, resulterer dette ikke i nogen dramatiske ændringer."

"Nå, det var et lille, men interessant emne. Tak, Ellie."