Maison  >  Article  >  Java  >  Qu'est-ce qu'un fil de discussion en Java

Qu'est-ce qu'un fil de discussion en Java

王林
王林original
2019-12-04 16:03:143506parcourir

Qu'est-ce qu'un fil de discussion en Java

Qu'est-ce qu'un thread ?

Un thread fait référence à un processus d'exécution dans un processus. Plusieurs processus peuvent s'exécuter. en un seul fil. Par exemple, de nombreux threads peuvent s'exécuter dans le processus java.exe. Les threads appartiennent toujours à un processus et plusieurs threads d'un processus partagent la mémoire du processus.

En Java, « thread » fait référence à deux choses différentes :

1. Une instance de la classe java.lang.Thread

2. .

Tutoriels vidéo recommandés sur Java : Tutoriels vidéo Java

Utilisez la classe java.lang.Thread ou l'interface java.lang.Runnable pour écrire du code afin de définir, instancier et démarrer de nouveaux threads.

Une instance de classe Thread est juste un objet, comme tout autre objet en Java, a des variables et des méthodes, vit et meurt sur le tas.

En Java, chaque thread a une pile d'appels Même si aucun nouveau thread n'est créé dans le programme, les threads s'exécutent toujours en arrière-plan.

Une application Java démarre toujours à partir de la méthode main(). La méthode main() s'exécute dans un thread, appelé thread principal.

Une fois qu'un nouveau fil de discussion est créé, une nouvelle pile d'appels est générée.

Les fils de discussion sont généralement divisés en deux catégories : les fils de discussion utilisateur et les fils de discussion en attente.

Lorsque tous les threads utilisateur ont fini de s'exécuter, la JVM s'arrête automatiquement. Cependant, le thread en attente n'est pas indépendant de la JVM. Le thread en attente est généralement créé par le système d'exploitation ou l'utilisateur.

Thread Java : création et démarrage

Définir les threads

1. Classe .lang.Thread.

Il existe une méthode run() dans cette classe, et vous devez faire attention à son utilisation :

public void run()

Si le thread est construit à l'aide d'un objet en cours d'exécution Runnable indépendant, appelez la méthode run de l'objet Runnable ; sinon, la méthode ne fait rien et renvoie.

Les sous-classes de Thread doivent remplacer cette méthode.

2. Implémentez l'interface java.lang.Runnable.

void run()

Lorsque vous créez un thread à l'aide d'un objet qui implémente l'interface Runnable, le démarrage du thread entraînera l'appel de la méthode run de l'objet dans un thread d'exécution distinct. Le contrat général de la méthode

run est qu'elle peut effectuer n'importe quelle opération souhaitée.

2. Instancier les threads

1 S'il s'agit d'un thread qui étend la classe java.lang.Thread, utilisez simplement new.

2. S'il s'agit d'une classe qui implémente l'interface java.lang.Runnable, utilisez le constructeur Thread :

Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)

3. Démarrez le fil

Appelez la méthode start() sur l'objet Thread du thread au lieu de run() ou d'autres méthodes.

Avant d'appeler la méthode start() : le thread est dans un nouvel état. Le nouvel état signifie qu'il y a un objet Thread, mais qu'il n'y a pas encore de vrai thread.

Après avoir appelé la méthode start() : une série de choses complexes se sont produites

Démarrez un nouveau thread d'exécution (avec une nouvelle pile d'appels

Le thread démarre à partir du); new state Passer à un état exécutable ;

Lorsque le thread a la possibilité de s'exécuter, sa méthode cible run() s'exécutera.

Remarque : Il n'y a rien de spécial dans la méthode run() pour Java. Comme la méthode main(), c'est simplement le nom de la méthode (et la signature) que le nouveau thread sait appeler. Par conséquent, il est légal d’appeler la méthode run sur Runnable ou Thread. Mais cela ne démarre pas un nouveau fil de discussion.

Articles et tutoriels connexes recommandés : Démarrer avec zéro base de Java

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn