Comment utiliser la classe Thread pour créer des threads en Java ?
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);
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(); } }
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(); }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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.

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.

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.

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.

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

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.
