Priorités des threads - 1

"Poursuivons notre leçon. Que sont les priorités des threads et pourquoi sont-elles nécessaires ?

"Dans les problèmes du monde réel, l'importance du travail effectué par différents threads peut varier considérablement. Le concept de priorité des threads a été créé pour contrôler ce processus. Chaque thread a une priorité représentée par un nombre de 1 à 10."

"10 est la priorité la plus élevée."

"1 est le plus bas."

"Si aucune priorité n'est donnée, alors un thread obtient la priorité 5 (normal)."

La priorité d'un thread n'affecte pas de manière significative son travail, mais est plutôt une recommandation. S'il y a plusieurs threads endormis qui doivent s'exécuter, la machine Java démarrera d'abord un thread avec une priorité plus élevée.

"La machine Java gère les threads comme elle l'entend. Les threads à faible priorité ne seront pas laissés en veille. Ils recevront simplement moins de temps d'exécution que les autres, mais ils seront toujours exécutés."

"Dans la plupart des cas, les threads sont toujours exécutés avec la même priorité. Une tentative de donner un thread plus que d'autres est souvent une indication de problèmes architecturaux dans un programme."

"Whoa. Et j'avais déjà rêvé d'attribuer la plus haute priorité à mes threads pour qu'ils en fassent 10 fois plus."

"Il s'avère que la situation ici est sur le point de se finaliser : un fil avec une priorité élevée peut et fonctionnera davantage, mais peut-être pas, il n'y a aucune garantie."

"Dites, comment puis-je changer la priorité d'un fil?"

"C'est très simple. La classe Thread a deux méthodes :"

Méthode Description
void setPriority(int newPriority)
Définit une nouvelle priorité
int getPriority()
Renvoie la priorité actuelle du thread

"La classe Thread a également trois constantes :"

public final static int MIN_PRIORITY = 1 ;

public final static int NORM_PRIORITY = 5 ;

public final statique int MAX_PRIORITY = 10 ;

"Laissez-moi deviner. MIN_PRIORITY est la priorité minimale, MAX_PRIORITY est la priorité maximale et NORM_PRIORITY est la priorité par défaut ?"

"Oui, exactement. Vous pouvez écrire le code qui attribue la priorité de thread la plus élevée."

« Y a-t-il une astuce ici ? Quelque chose comme ça ?

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

« C'est exact. Rien de compliqué, n'est-ce pas ? »

"Oui. Pouvez-vous définir/modifier la priorité après le démarrage d'un thread ? Ou est-ce comme setDaemon, où vous devez définir la valeur avant le démarrage du thread ?"

"La priorité peut être modifiée après le démarrage d'un thread. Comme je l'ai déjà dit, cela n'entraîne aucun changement radical."

"Eh bien, c'était un petit mais intéressant sujet. Merci, Ellie."