Quels sont les fils légers et lourds en termes de Java?Fil de poids léger et léger
Répondre
Dans la plupart des systèmes, les threads légers sont les threads normaux que vous créez avec l'aide de la bibliothèque, comme p_threads dans linux. Alors que le poids lourd, dans certains systèmes, se réfère à un processus système, avec sa propre mémoire virtuelle et une structure plus complexe, comme des informations sur les performances/statistiques du processus.
Pour plus d'informations:
http://www.computerworld.com/s/article/66405/Processes_and_Threads
http://msdn.microsoft.com/en-us/library/ms684841(VS.85).aspx
Il est lié à la quantité de « contexte » associé à un fil, et par conséquent la quantité de temps qu'il faut pour effectuer un « changement de contexte ".
Les threads lourds (généralement les threads de niveau noyau/os) ont beaucoup de contexte (registres matériels, piles de noyau, etc.). Il faut donc beaucoup de temps pour basculer entre les threads. Les threads lourds peuvent également avoir des restrictions sur eux, par exemple, sur certains systèmes d'exploitation, les threads du noyau ne peuvent pas être préemptés, ce qui signifie qu'ils ne peuvent pas être désactivés de force tant qu'ils n'abandonnent pas le contrôle.
D'autre part, les threads légers (en général, les threads d'espace utilisateur) ont beaucoup moins de contexte. (Ils partagent essentiellement le même contexte matériel), ils ont seulement besoin de stocker le contexte de la pile de l'utilisateur, d'où le temps nécessaire pour changer les threads légers est beaucoup plus court.
Sur la plupart des systèmes d'exploitation, tous les threads que vous créez en tant que programmeur dans l'espace utilisateur seront légers par rapport aux threads de l'espace noyau. Il n'y a pas de définition formelle du poids lourd et léger, c'est juste une comparaison entre les threads avec plus de contexte et les threads avec moins de contexte. N'oubliez pas que chaque OS a sa propre implémentation de threads, et les lignes entre les threads lourds et légers ne sont pas nécessairement clairement définies. Dans certains langages et frameworks de programmation, quand vous créez un "Thread", vous n'avez peut-être même pas un thread complet, vous pourriez juste obtenir une abstraction qui cache le nombre réel de threads en dessous.
[Certains systèmes d'exploitation permettent fils de partager l'espace d'adressage, de sorte que les discussions qui généralement assez lourd, sont un peu plus léger]
Java threads standard sont assez lourds par rapport aux fils Erlang qui sont très légers processus spawnable. Erlang démontre une machine à états finis distribuée. Cependant, à titre d'exemple, http://kilim.malhar.net/, une bibliothèque d'extensions Java basée sur le modèle Actor de concurrence, propose une construction pour les threads légers dans Java. Au lieu de thread implémentant run(), un thread Kilim implémente à partir de la bibliothèque Kilim en utilisant une méthode execute(). Apparemment, cela montre que l'exécution de Java surpasse Erlang (au moins dans un environnement local AFAIK). Java a effectivement eu de telles choses dans la langue originale appelée «fil vert» mais les versions ultérieures de Java les ont abandonnées au profit des threads natifs
- 1. Problème de mélange poids léger et léger swing étrange
- 2. Système de fichiers de poids léger
- 3. Utilisez un poids de police léger avec Sifr
- 4. quelqu'un peut-il suggérer un bon poids léger rails CMS?
- 5. Éditeur Léger IDE/Texte Léger pour Windows - Développement C++
- 6. léger serveur PHP RESTful
- 7. Outil de modélisation UML léger et convivial?
- 8. Courtier JMS léger
- 9. Analyseur syntaxique léger
- 10. plugin lightbox de base (léger)
- 11. MVC léger - pas de cadre
- 12. système de gabarit léger gratuit
- 13. conteneur Poids léger autour const char * et longueur sans copier les données
- 14. Outil de visualisation de réseau léger
- 15. léger malentendu avec tabActivity, vues et activité
- 16. PHP et Oracle utilisant un pilote léger
- 17. C++ UTF-8 code léger et permissif?
- 18. Léger fournisseur d'abonnement asp.net alternative
- 19. compte à rebours jQuery léger
- 20. Cadre MVC léger pour JavaScript
- 21. Editeur SQL léger pour Eclipse
- 22. Débogage léger sur Linux embarqué
- 23. analyseur HTML rapide, léger pour
- 24. Déclaration PHP/MySQL SELECT - Léger problème
- 25. Je cherche un panier ASP.net léger et compatible avec PayPal
- 26. Moteur de modèle HTML léger Android
- 27. processus de développement logiciel super léger
- 28. Problème de migration léger Core Data
- 29. Langage de balisage léger pour Python
- 30. Méthode de construction d'éditeur de texte léger et multiplateforme
@TFD - l'OP n'a posé que 4 questions, il y a beaucoup de temps pour accepter une réponse. – ChrisF