Maison >Java >javaDidacticiel >Quelles sont les caractéristiques et l'utilisation des threads en Java
Un processus peut contenir plusieurs threads. Les threads sont des composants du processus. Chaque thread doit s'appuyer sur le processus auquel il appartient. Les threads ont des piles privées, des compteurs de programme et des variables locales, mais ne peuvent pas posséder de ressources système. Il partage toutes les ressources du processus avec d'autres threads du processus parent.
Les threads peuvent effectuer certaines tâches. Ils peuvent partager des variables partagées et une partie de l'environnement du processus parent avec d'autres threads, et coopérer entre eux pour accomplir des tâches.
Les threads s'exécutent indépendamment et ne savent pas s'il existe d'autres threads dans le processus.
L'exécution du thread est préemptive, c'est-à-dire que le thread en cours d'exécution peut être suspendu à tout moment afin d'exécuter un autre thread.
Un thread peut créer ou détruire un autre thread, et plusieurs threads d'un processus peuvent s'exécuter simultanément.
Java utilise la classe Thread pour représenter les threads. Tous les objets thread doivent être des instances de Thread ou de ses sous-classes. Le rôle de chaque thread est d'accomplir une certaine tâche, qui est en fait d'exécuter une. programme.Stream (un morceau de code exécuté séquentiellement)
Étapes :
1. la classe et le corps de la méthode run Il représente les tâches que le thread doit accomplir
2 Créez une instance de la classe Thread, c'est-à-dire créez un objet thread
3. thread pour démarrer le thread
Conclusion : Si vous utilisez Si vous héritez d'une sous-classe de la classe Thread pour créer une classe thread, plusieurs threads ne peuvent pas partager les variables d'instance de la classe thread, telles que la variable i mentionné ci-dessus
1 : Définissez l'implémentation de la classe d'interface Runnable et remplacez sa méthode Run La méthode run est également le corps d'exécution du thread !
2 : Créez une instance de la classe d'implémentation Runnable et utilisez cette instance comme cible de Thread pour créer un objet Thread. Cet objet Thread est le véritable objet thread !
3 : Appelez la méthode start pour démarrer le thread
Conclusion : La création de plusieurs threads à l'aide de l'interface Ruunable peut partager les variables d'instance de la classe thread En effet, de cette manière, le Runnable créé par. le programme L'objet n'est que la cible du thread, et plusieurs threads peuvent partager une cible, donc plusieurs threads peuvent partager une variable d'instance
L'implémentation du multi-threading via Runnable est en fait un packaging exécuté dans le corps d'exécution du thread, mais actuellement Java ne peut envelopper aucune méthode dans un exécuteur de thread
À partir de Java5, Java fournit l'interface Callable fournit une méthode call() qui peut être utilisée. en tant qu'exécuteur de thread, qui ressemble beaucoup à Runnable. , mais la méthode call() est plus puissante - la méthode call() peut avoir une valeur de retour et la méthode call() peut lever une exception
Java5 fournit l'interface Future pour représenter la méthode call() de la valeur de retour de l'interface Callable et fournit une classe d'implémentation FutureTask pour l'interface Future, qui implémente l'interface Future et implémente également l'interface Runnable - qui peut être utilisée comme cible de Fil de discussion.
Étapes d'implémentation :
1 : Créez la classe d'implémentation de l'interface Callable et implémentez la méthode d'appel. La méthode d'appel deviendra le corps d'exécution du thread et la méthode d'appel a une valeur de retour. Créez la classe d'implémentation de l'interface appelable. !
2 : Utilisez la classe FutureTask pour envelopper l'objet Callable. La FutureTask encapsule la valeur de retour de la méthode d'appel de la classe Callable
3 : Utilisez l'objet FutureTask comme cible de Thread pour créer et démarrer un nouveau fil !
4 : Utilisez la méthode get de FutureTask pour obtenir la valeur de retour après exécution
Conclusion : L'avantage d'utiliser Runnable et Callable est que - la classe thread implémente uniquement l'interface Runnable ou Callable, et peut hérite également d'autres classes ; dans cette méthode, plusieurs threads peuvent partager un objet cible, il est donc très approprié pour les situations où plusieurs threads identiques traitent la même ressource, séparant ainsi le processeur, le code et les données, et le modèle avec des paramètres formels clairs reflète l'aspect. Idées de programmation pour les objets. L’inconvénient est que la complexité de programmation est légèrement plus élevée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!