2017-03-22 5 views

Répondre

2

Si vous demandez si l'ordonnanceur a pour fixer les fils en fonction de leur priorité, la réponse est pas.

Il peut choisir de le faire (planification préemptive) mais c'est à la plate-forme de décider quel algorithme de planification utiliser.

Quelques lectures:

+0

Je ne parle pas de la planification. Ma question est simple La priorité du fil peut être changée par la JVM ou non – mcacorner

+0

Je pense que tu dois être précis sur ta question: que veux-tu dire par "la JVM peut-elle changer"? Est-il possible que quelqu'un écrit une implémentation JVM change la priorité des threads? Ou y a-t-il une implémentation de la JVM? Je crois que la spécification ne l'interdit pas (donc probablement oui pour la première question), mais je doute que la JVM fasse cela (donc probablement non pour la deuxième question). Mais, pourquoi voudriez-vous cela? –

+0

Je demande à propos de la JVM régulière pas annulée – mcacorner

2

Non, il ne sera pas. Juste pour ajouter, sous les hottes, c'est l'OS ou le système qui a l'appel final sur les threads à exécuter sur son noyau et donc, son propre algorithme d'ordonnancement est ce qui compte finalement. Cependant, JVM présente les threads à OS et ici la priorité joue à nouveau un rôle basé sur l'algorithme d'ordonnancement JVM mais c'est l'OS qui décide.

1

Je ne vois aucune garantie explicite pour cela, mais ce n'est pas le genre de chose qui est explicitement garanti.

Il y a un getter et un setter pour la priorité, et l'implication est que la valeur ne changera pas à moins que quelqu'un n'appelle à nouveau le setter. Mais veuillez noter que cela ne signifie pas qu'aucune partie du système n'est autorisée à appeler setPriority() sur "vos" threads, juste qu'il n'y a pas de supercherie interne dans la classe Thread elle-même.