J'ai un composant Java qui exécute une logique métier super compliquée, dont certains sont mis en parallèle et les sous-tâches exécutant des threads sont regroupées. Maintenant, chaque requête à ce composant peut avoir une certaine priorité qui est mappée d'une certaine manière à la priorité des threads. A le début de l'exécution je peux assigner une priorité appropriée à l'exécution du thread. La partie problématique est de passer la priorité à chaque thread exécutant des sous-tâches. Je sais que la création d'un nouveau thread enfant permettra d'accomplir cela car les threads fils héritent de la priorité des threads parents, mais je voudrais profiter du pool de threads. Une question:Passage de priorités de threads aux pools de threads
- Y at-il un moyen de s'assurer que chaque thread dans le chemin d'exécution a la priorité appropriée?
- Comment puis-je surveiller la priorité des threads à chaque étape de l'exécution, bien sûr je ne veux pas coder en dur n'importe quel code de traçage? Sur la chose qui est venu dans mon esprit est d'écrire un script de suivi dans BTrace
Cheers. Tomek
Je sais que la mise en œuvre des priorités est un très OS/machine virtuelle Java pense spécifique, mais mon travail composante que sur les fenêtres et les priorités semblent fonctionner très bien là-bas . De plus, je ne construis pas un composant à partir de rien, mais seulement brancher des priorités sur une chose existante. Vous avez mentionné les primitives de synchronisation. Pourriez-vous préciser comment utiliser cette approche pour classer par ordre de priorité 1 000 demandes parallèles sans les priver de la priorité la plus basse? – Tomek
Requêtes Wrk 1k; dépend. Si elles sont en grande partie en attente d'E/S, l'utilisation de NIO (solution basée sur) aurait du sens - 1000 threads ou plus peuvent être un modèle très inefficace. Si lié à l'UC, eh bien, vous ne devriez jamais commencer à traiter autant de requêtes simultanées, mais commencer à échouer plus tôt. Donc, ce que je veux dire est ce nombre limite de threads réels par la mise en file d'attente, en commençant à échouer tôt, etc: les threads ne peuvent pas résoudre la situation de surcharge. Mais si vous pensez que les priorités de threads sont utiles, et qu'elles fonctionnent sur la plate-forme (ce que vous avez probablement raison à propos de Windows), alors rien de mal à utiliser. Juste cela assurez-vous qu'ils aident. – StaxMan