Maison Java javaDidacticiel Comment utiliser la classe Thread pour créer des threads en Java ?

Comment utiliser la classe Thread pour créer des threads en Java ?

May 07, 2023 am 09:04 AM
java thread

Il existe deux manières de créer un thread en Java : en utilisant la classe Thread et en utilisant l'interface Runnable. Lorsque vous utilisez l'interface Runnable, vous devez créer une instance de Thread. Par conséquent, que vous créiez un thread via la classe Thread ou l'interface Runnable, vous devez créer une instance de la classe Thread ou de sa sous-classe. Le constructeur de la classe Thread a été surchargé huit fois. Le constructeur est le suivant :

public Thread( );  public Thread(Runnable target);  public Thread(String name);  public Thread(Runnable target, String name);  public Thread(ThreadGroup group, Runnable target);  public Thread(ThreadGroup group, String name);  public Thread(ThreadGroup group, Runnable target, String name);  public Thread(ThreadGroup group, Runnable target, String name, long stackSize);
Copier après la connexion

Cible Runnable

Une instance d'une classe qui implémente l'interface Runnable. Il convient de noter que la classe Thread implémente également l'interface Runnable, par conséquent, les instances de classes héritées de la classe Thread peuvent également être transmises à ce constructeur en tant que cibles.

Nom de la chaîne

Le nom du fil de discussion. Ce nom peut être défini via la méthode setName de la classe Thread après avoir créé une instance de Thread. Si le nom du thread n'est pas défini, le thread utilise le nom du thread par défaut : Thread-N N est l'ordre dans lequel le thread est créé et est un entier positif non répétitif.

GroupeThreadGroup

Le groupe de threads auquel appartient le thread actuellement créé. Si aucun groupe de threads n'est spécifié, tous les threads sont ajoutés à un groupe de threads par défaut. Les détails sur les groupes de threads seront abordés en détail dans les chapitres suivants.

long stackSize

La taille de la pile de threads Cette valeur est généralement un multiple entier de la page CPU. Par exemple, la taille de la page x86 est de 4 Ko. Sous la plateforme x86, la taille par défaut de la pile de threads est de 12 Ko.

Une classe Java ordinaire peut devenir une classe thread tant qu'elle hérite de la classe Thread. Et le code du thread peut être exécuté via la méthode start de la classe Thread. Bien que les sous-classes de la classe Thread puissent être instanciées directement, la méthode run de la classe Thread doit être substituée dans la sous-classe pour exécuter réellement le code du thread. Le code suivant donne un exemple d'utilisation de la classe Thread pour créer un thread :

package mythread;      public class Thread1 extends Thread    {        public void run()        {            System.out.println(this.getName());        }        public static void main(String[] args)        {            System.out.println(Thread.currentThread().getName());            Thread1 thread1 = new Thread1();            Thread1 thread2 = new Thread1 ();            thread1.start();            thread2.start();        }    }
Copier après la connexion

Le code ci-dessus crée deux threads : thread1 et thread2. Les lignes 005 à 008 du code ci-dessus sont la méthode d'exécution de la classe Thread1. Lorsque la méthode start est appelée sur les lignes 014 et 015, le système appelle automatiquement la méthode run. À la ligne 007, this.getName() est utilisé pour afficher le nom du thread actuel, étant donné que le nom du thread n'est pas spécifié lors de la création du thread, la sortie du nom du thread est la valeur par défaut du système, qui se présente sous la forme de Thread. -n. Le nom du thread principal est affiché sur la ligne 011.

Les résultats d'exécution du code ci-dessus sont les suivants :

main
Thread-0
Thread-1

Comme le montrent les résultats de sortie ci-dessus, la sortie principale dans la ligne *** est le nom du fil conducteur. Les Thread-1 et Thread-2 suivants sont respectivement les résultats de sortie de thread1 et thread2.

Remarque : tout programme Java doit avoir un thread principal. Généralement, le nom de ce thread principal est main. Ce n'est qu'en créant des threads supplémentaires dans le programme que celui-ci peut être considéré comme un véritable programme multithread. En d’autres termes, un programme multithread doit avoir plus d’un thread.

La classe Thread a un constructeur surchargé pour définir le nom du thread. En plus d'utiliser la méthode constructeur pour définir le nom du thread lors de la création d'un thread, vous pouvez également utiliser la méthode setName de la classe Thread pour modifier le nom du thread. Pour définir le nom du thread via le constructeur de la classe Thread, vous devez utiliser le constructeur public Thread(String name) de la classe Thread dans la sous-classe de Thread. Par conséquent, vous devez également ajouter un thread à transmettre dans la sous-classe de Thread. Constructeur de nom. Le code suivant donne un exemple de définition du nom du thread :

package mythread;   public class Thread2 extends Thread  {      private String who;       public void run()      {          System.out.println(who + ":" + this.getName());      }      public Thread2(String who)      {          super();          this.who = who;      }      public Thread2(String who, String name)      {          super(name);          this.who = who;      }      public static void main(String[] args)      {          Thread2 thread1 = new Thread2 ("thread1", "MyThread1");          Thread2 thread2 = new Thread2 ("thread2");          Thread2 thread3 = new Thread2 ("thread3");          thread2.setName("MyThread2");          thread1.start();          thread2.start();          thread3.start();      }
Copier après la connexion

Il y a deux constructeurs dans la classe :

Ligne 011 : public sample2_2(String who)

Ce constructeur a un paramètre : who. Ce paramètre est utilisé pour identifier le thread actuellement créé. Le constructeur par défaut de Thread, public Thread(), est toujours appelé dans ce constructeur.

Ligne 016 : public sample2_2(String who, String name)

Le who dans ce constructeur a la même signification que le who dans le premier constructeur, et le paramètre name est le nom du thread. Dans ce constructeur, le constructeur public Thread(String name) de la classe Thread est appelé, qui est super(name) à la ligne 018.

Trois threads sont établis dans la méthode principale : thread1, thread2 et thread3. Parmi eux, thread1 définit le nom du thread via la méthode de construction, thread2 modifie le nom du thread via la méthode setName et thread3 ne définit pas le nom du thread.

Les résultats en cours d'exécution sont les suivants :

thread1:MyThread1
thread2:MyThread2
thread3:Thread-1

Comme le montrent les résultats de sortie ci-dessus, les noms de thread de thread1 et thread2 ont été modifiés, tandis que le thread le nom du thread3 est toujours la valeur par défaut : Thread-1. La raison pour laquelle le nom de thread de thread3 n'est pas Thread-2 mais Thread-1 est que le nom de thread2 a été spécifié à la ligne 026. Par conséquent, lorsque thread3 est démarré, le nom de thread de thread3 est défini sur Thread-1. Vous obtiendrez donc le résultat ci-dessus.

Remarque : vous pouvez utiliser setName pour définir le nom du thread avant et après l'appel de la méthode start. Cependant, l'utilisation de setName pour modifier le nom du thread après l'appel de la méthode start entraînera une incertitude, ce qui signifie que setName ne sera peut-être pas exécuté avant l'exécution. la méthode est exécutée. Si vous souhaitez utiliser le nom du thread dans la méthode run, il y aura un phénomène selon lequel même si la méthode setName est appelée, le nom du thread n'est pas modifié.

La méthode start de la classe Thread ne peut pas être appelée plusieurs fois. Par exemple, la méthode thread1.start() ne peut pas être appelée deux fois. Sinon, une IllegalThreadStateException sera 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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

See all articles