Priorità del thread - 1

"Continuiamo la nostra lezione. Quali sono le priorità dei thread e perché sono necessarie?

"Nei problemi del mondo reale, l'importanza del lavoro svolto da diversi thread può variare notevolmente. Il concetto di priorità del thread è stato creato per controllare questo processo. Ogni thread ha una priorità rappresentata da un numero da 1 a 10."

"10 è la massima priorità."

"1 è il più basso."

"Se non viene assegnata alcuna priorità, un thread ottiene priorità 5 (normale)."

La priorità di un thread non influisce in modo significativo sul suo lavoro, ma è piuttosto una raccomandazione. Se sono presenti diversi thread dormienti che devono essere eseguiti, la macchina Java avvierà prima un thread con una priorità più alta.

"La macchina Java gestisce i thread come meglio crede. I thread con bassa priorità non saranno lasciati inattivi. Riceveranno semplicemente un tempo di esecuzione inferiore rispetto ad altri, ma verranno comunque eseguiti."

"Nella maggior parte dei casi, i thread vengono sempre eseguiti con la stessa priorità. Un tentativo di dare un thread in più rispetto ad altri è spesso un'indicazione di problemi di architettura in un programma."

"Whoa. E avevo già sognato di assegnare la massima priorità ai miei thread in modo che facessero 10 volte tanto."

"Si scopre che la situazione qui è vicina alla finalizzazione: un thread con un'alta priorità può e funzionerà di più, ma forse no, non c'è alcuna garanzia."

"Dì, come faccio a cambiare la priorità di un thread?"

"È molto semplice. La classe Thread ha due metodi:"

Metodo Descrizione
void setPriority(int newPriority)
Imposta una nuova priorità
int getPriority()
Restituisce la priorità del thread corrente

"La classe Thread ha anche tre costanti:"

public final static int MIN_PRIORITY = 1;

public final static int NORM_PRIORITY = 5;

public final static int MAX_PRIORITY = 10;

"Fammi indovinare. MIN_PRIORITY è la priorità minima, MAX_PRIORITY è la massima e NORM_PRIORITY è la priorità predefinita?"

"Sì, esatto. Puoi scrivere il codice che assegna la massima priorità al thread."

"C'è qualche trucco qui? Qualcosa del genere?"

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

"Esatto. Niente di complicato, vero?"

"Sì. Puoi impostare/modificare la priorità dopo l'avvio di un thread? O è come setDaemon, dove devi impostare il valore prima che il thread venga avviato?"

"La priorità può essere modificata dopo l'avvio di un thread. Come ho già detto, ciò non comporta cambiamenti drammatici."

"Beh, quello era un argomento piccolo ma interessante. Grazie, Ellie."