Trådprioriteringer - 1

"La oss fortsette leksjonen. Hva er trådprioriteringer og hvorfor trengs de?

"I problemer i den virkelige verden kan viktigheten av at arbeidet utføres av forskjellige tråder variere sterkt. Konseptet med trådprioritet ble opprettet for å kontrollere denne prosessen. Hver tråd har en prioritet representert med et tall fra 1 til 10."

"10 er høyeste prioritet."

"1 er den laveste."

"Hvis ingen prioritet er gitt, får en tråd prioritet 5 (normal)."

En tråds prioritering påvirker ikke arbeidet i vesentlig grad, men er i stedet mer en anbefaling. Hvis det er flere sovende tråder som må kjøres, vil Java-maskinen starte en tråd med høyere prioritet først.

"Java-maskinen administrerer tråder slik den vil. Tråder med lav prioritet vil ikke bli overlatt til inaktive. De vil ganske enkelt få mindre utførelsestid enn andre, men de vil fortsatt bli utført."

"I de fleste tilfeller kjøres tråder alltid med samme prioritet. Et forsøk på å gi en tråd mer enn andre er ofte en indikasjon på arkitektoniske problemer i et program."

"Wow. Og jeg hadde allerede drømt om å gi høyest prioritet til trådene mine slik at de ville gjøre 10 ganger så mye."

"Det viser seg at situasjonen her er nær ved å avsluttes: en tråd med høy prioritet kan og vil fungere mer, men kanskje ikke - det er ingen garanti."

"Si, hvordan endrer jeg prioritet til en tråd?"

"Det er veldig enkelt. Thread-klassen har to metoder:"

Metode Beskrivelse
void setPriority(int newPriority)
Setter en ny prioritet
int getPriority()
Returnerer gjeldende 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;

"La meg gjette. MIN_PRIORITY er minimumsprioritet, MAX_PRIORITY er maksimum, og NORM_PRIORITY er standardprioritet?"

"Ja, akkurat. Du kan skrive koden som tildeler høyest trådprioritet."

"Er det noe triks her? Noe sånt som dette?"

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

"Det er riktig. Ikke noe komplisert, ikke sant?"

"Jepp. Kan du sette/endre prioriteten etter at en tråd starter? Eller er det som setDaemon, hvor du må sette verdien før tråden startes?"

"Prioriteten kan endres etter at en tråd er startet. Som jeg allerede har sagt, resulterer dette ikke i noen dramatiske endringer."

"Vel, det var et lite, men interessant emne. Takk, Ellie."