2010-02-25 4 views

Répondre

16

Les threads Java peuvent être implémentés d'une manière conforme à la spécification. La spécification ne nécessite pas une implémentation spécifique.

En effet, toutes les machines virtuelles Java de bureau et/ou de serveur implémentent des threads Java en tant que threads natifs. Cela signifie qu'il y a exactement 1 thread natif pour chaque thread Java et que le système d'exploitation fait toute la planification, comme c'est le cas pour un programme C, par exemple. Certaines vieilles machines virtuelles Java et éventuellement certaines machines virtuelles Java pour les périphériques disposant de ressources limitées peuvent implémenter des threads de telle sorte que le nombre de threads natifs utilisés est inférieur au nombre de threads Java en cours d'exécution (ou 1). Ces implémentations sont dites implémenter des "threads verts". Dans ce cas, la JVM elle-même est responsable de la commutation et de la planification des tâches, par opposition à la délégation de cette tâche au système d'exploitation.

+0

Quelqu'un peut-il me donner une référence pour cela? –

+0

@espertus Code source de référence L'implémentation JVM HotSpot peut être trouvée sur http://openjdk.org –

5

Cela dépend de l'implémentation de la JVM, bien sûr, mais je pense qu'ils sont identiques. C'est, un Thread en Java est implémenté via un thread natif. Vous pouvez vous attendre/faire avec les threads Java tout le genre de choses que vous pouvez avec des threads natifs.

0

Les threads Java et les threads natifs sont complètement différents. Le thread natif fait partie de la plate-forme sous-jacente (le système d'exploitation).

Les threads Java sont l'une des fonctionnalités du langage Java pour la prise en charge de la simultanéité. La spécification Java contrôle l'API et le fonctionnement des threads Java. En fin de compte, les threads Java seront mappés sur des threads natifs lors de l'exécution du programme Java. Les threads java ne doivent pas non plus être mappés individuellement avec des threads natifs.

0

Les threads Java (classe Thread et interface exécutable) sont des API de niveau supérieur aux threads natifs des applications partagées en mémoire. J'ai recommandé ce livre "Java Threads" par Oaks et Wong http://shop.oreilly.com/product/9780596007829.do. Il est courant d'implémenter l'interface Runnable, mais cela dépend de la portée de votre code.