La priorité des threads de niveau
De faire une application en Java sous Linux avec des fils si je voulais
définir un niveau de priorité qui sont des valeurs min et max?
Dans Windows les plages va de 0 (faible) à 31 (le plus élevé).
double possible de Java Threads de priorité dans Linux
OriginalL'auteur xdevel2000 | 2010-07-23
Vous devez vous connecter pour publier un commentaire.
En Java, il n'est pas Thread.MIN_PRIORITY à enfiler.MAX_PRIORITY il n'y a pas de plages définies, car il dépend de l'OS sous-jacent et/ou de la JVM.
Pour la performance méfiez-vous, si vous êtes le partage des ressources entre les Threads de priorités différentes, vous pouvez exécuter une Inversion de Priorité des questions. C'est lorsqu'un Thread de priorité faible détient une ressource avec un thread de priorité élevée en attente. Alors le thread de priorité élevée peut attendre une longue période de temps.
MIN_PRIORITY
etMAX_PRIORITY
avez défini les valeurs. Ils sont 1 et 10, respectivement. La mise en œuvre définies chose est de savoir comment ces niveaux en correspondance avec les OS prioerity niveaux!le lien est rompu.
OriginalL'auteur Romain Hippeau
La
Thread
classe a deux statiqueint
champsMIN_PRIORITY
etMAX_PRIORITY
dont les valeurs sontpotentiellement (si pas fait) de la plate-forme1
et10
. Il est théoriquement possible que ces valeurs peuvent changer dans un avenir Java version. Cependant, il est très peu probable, pas moins, car un tel changement permettrait de rompre la compatibilité binaire. (La valeur d'une primitive de la constante peut être lié à du code qui l'utilise au moment de la compilation.) De toute façon, il est implicite dans le cahier des charges de (par exemple) lesetPriority
méthode de la valeur de MIN_PRIORITY sera inférieure ou égale à la valeur de MAX_PRIORITY.MODIFIER
Ah ... si vous vraiment vous voulez savoir comment la Java des valeurs de priorité (par exemple,
Thread.MIN_PRIORITY
etThread.MAX_PRIORITY
) carte de Linux natif des threads priorités:Une fois de plus, la priorité des mappages pourrait être de plate-forme /JVM /version spécifique. Le soleil ne spécifiez pas ce qu'ils sont.
Il est très peu probable que vous pouvez déterminer la priorité des mappages dans une application Java pure.
Expérimentalement vous pourriez être en mesure de comprendre les mappages par la définition de diverses Java priorités des threads et de la recherche à l'natif Linux priorités des threads. (Il y a probablement un moyen d'obtenir la
ps
de commande pour imprimer les priorités des threads.)Sinon, vous pouvez télécharger et de lire le OpenJDK code source (pour votre version de la plate-forme) pour voir ce que le Java runtime.
EDIT 2
En fait, selon cette page, la cartographie de Java priorités natif priorités des threads dépend (et peut être explicitement définie à l'aide des) point d'accès-XX options java. (Recherche de la page pour "priorité".)
la seule fiable à 100% réponse est à imprimer les valeurs de ces constantes à l'aide de votre machine virtuelle java installée ... et ne présumez pas qu'ils être le même sur un autre JVM.
vos questions n'a pas vraiment d'expliquer que vous êtes intéressés par la cartographie de la Java de la valeur pour le noyau Linux de la valeur. Vous devriez peut-être s'étendre, par la mise à jour de votre question.
OriginalL'auteur Stephen C
Avez-vous essayé d'utiliser les constantes Fil.MIN_PRIORITY et Fil.MAX_PRIORITY pour définir la priorité de votre fils?
OriginalL'auteur jdecuyper
Il convient de noter que la priorité de thread est juste une touche qui est largement ignoré sur Linux, sauf si vous êtes root et ne peut être diminué que sur windows.
En bref, vous ne devriez pas être la rédaction de votre programme de s'appuyer sur le comportement des priorités des threads. Tout ce que vous essayez de faire est mieux de le faire d'une autre manière.
OriginalL'auteur Peter Lawrey
Utilisation setPriority, le niveau de priorité allant de 1 (le moins important) à 10 (le plus important), si aucun niveau n'est explicitement défini, le niveau de priorité est 5 par défaut.
Également vérifier les constantes MAX_PRIORITY et MIN_PRIORITY
OriginalL'auteur Marco
-20 (la plus élevée) à +20 (le plus bas), la valeur par défaut est 0.
Vous ne pouvez pas incrémenter la valeur de nice par une valeur négative si vous n'êtes pas root, si.
(par exemple, incrémentation d'une valeur de nice de 5 par -7 serait ignorée, parce que vous n'avez pas obtenu les autorisations pour le faire).
MODIFIER voir https://stackoverflow.com/questions/128039/java-threads-priority-in-linux
valeurs va de -20 (supérieur) à 19 (le plus bas)
C Bien, après avoir lu plus de réponses et des commentaires, il en fait t vous voulez savoir comment ces valeurs sont mappés (ce qui est de la JVM). (Et non, je n'ai pas le confondre Java est indépendant de la plateforme et il n'est pas judicieux d'utiliser OS paramètres spécifiques.)
oui, il s'avère qu'il était intéressé par la cartographie.
OriginalL'auteur Tedil