Trådprioriteringar - 1

"Låt oss fortsätta vår lektion. Vad är trådprioriteringar och varför behövs de?

"I verkliga problem kan vikten av att arbetet utförs av olika trådar variera mycket. Konceptet med trådprioritet skapades för att styra denna process. Varje tråd har en prioritet representerad av ett nummer från 1 till 10."

"10 är högsta prioritet."

"1 är lägst."

"Om ingen prioritet ges får en tråd prioritet 5 (normalt)."

En tråds prioritet påverkar inte dess arbete nämnvärt, utan är istället mer en rekommendation. Om det finns flera sovande trådar som behöver köras startar Java-maskinen en tråd med högre prioritet först.

"Java-maskinen hanterar trådar som den vill. Trådar med låg prioritet kommer inte att lämnas inaktiva. De kommer helt enkelt att få kortare körtid än andra, men de kommer fortfarande att köras."

"I de flesta fall körs trådar alltid med samma prioritet. Ett försök att ge en tråd mer än andra är ofta en indikation på arkitektoniska problem i ett program."

"Oj. Och jag hade redan drömt om att ge högsta prioritet till mina trådar så att de skulle göra 10 gånger så mycket."

"Det visar sig att situationen här är nära att slutföras: en tråd med hög prioritet kan och kommer att fungera mer, men kanske inte - det finns ingen garanti."

"Säg, hur ändrar jag prioritet för en tråd?"

"Det är väldigt enkelt. Thread-klassen har två metoder:"

Metod Beskrivning
void setPriority(int newPriority)
Anger en ny prioritet
int getPriority()
Returnerar den aktuella trådprioriteten

"Trådklassen har också tre konstanter:"

offentlig slutlig statisk int MIN_PRIORITY = 1;

offentlig slutlig statisk int NORM_PRIORITY = 5;

offentlig slutlig statisk int MAX_PRIORITY = 10;

"Låt mig gissa. MIN_PRIORITY är lägsta prioritet, MAX_PRIORITY är max och NORM_PRIORITY är standardprioritet?"

"Ja, precis. Du kan skriva koden som ger högsta trådprioritet."

"Finns det något knep här? Något sådant här?"

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

"Det stämmer. Inget komplicerat, eller hur?"

"Japp. Kan du ställa in/ändra prioriteten efter att en tråd startar? Eller är det som setDaemon, där du måste ställa in värdet innan tråden startas?"

"Prioriteten kan ändras efter att en tråd har startat. Som jag redan har sagt, detta resulterar inte i några dramatiska förändringar."

"Tja, det var ett litet men intressant ämne. Tack, Ellie."