[Java] Comment implémenter le multithreading

introduction

Cette fois, je vais vous expliquer comment implémenter le multithreading Java. Le multithreading est utilisé lorsque vous souhaitez exécuter plusieurs processus en parallèle.

De plus, le multithreading utilise une classe appelée Thread, Je voudrais vous présenter une méthode souvent utilisée dans la classe Thread.

Après cela, il sera expliqué dans les versions et environnements suivants.

IDE:eclipse Version Java: 8 OS:Mac OS

Ensuite, je vais vous l'expliquer immédiatement.

1. Structure des dossiers

La structure des dossiers de la source d'échantillon créée cette fois est la suivante.

スクリーンショット 2018-11-12 20.57.13.png

2. Mise en œuvre du traitement multi-thread

2-1. Aperçu de l'exemple de programme

Quant au contenu à implémenter dans cet exemple, nous allons implémenter un programme de base qui démarre la classe principale "Main.java" et démarre les sous-classes "SubThreadA.java" et "SubThreadB.java" en parallèle. ..

2-2. Implémentation des sous-classes

Tout d'abord, implémentez la sous-classe que vous souhaitez traiter en parallèle cette fois.

Pour créer un programme multithread, étendez la classe Thread et écrivez la méthode d'exécution dans cette classe. Décrivez comme suit.

nom de sous-classe de classe étend Thread{
    public void run() {
En traitement
    }
}

Dans cet exemple de programme, implémentons un programme qui génère les mots suivants vers la console dans chaque thread.

SubThreadA.java → "Le thread A a démarré." SubThreadB.java → "Le thread B a démarré."

SubThreadA.java


package main;

public class SubThreadA extends Thread {
    public void run() {
        System.out.println("Le fil A a démarré.");
    }
}

SubThreadB.java


package main;

public class SubThreadB extends Thread {
    public void run() {
        System.out.println("Le fil B a démarré.");
    }
}

2-3. Implémentation de la classe principale

Ensuite, implémentez le processus pour démarrer le thread créé précédemment dans la classe principale.

Comme pour la méthode d'implémentation, le processus de la méthode run est lancé en multithread en appelant la méthode start à partir de l'objet de la sous-classe créée précédemment.

Décrivez comme suit.

    public static void main(String[] args) {
Nom de la sous-classe mt=nouveau nom de sous-classe();
        mt.start();
}

Maintenant, décrivons le processus d'appel de "SubThreadA" et "SubThreadB".

main.java


package main;

public class Main {
    public static void main(String[] args) {
        //Création d'un objet de sous-classe qui hérite de la classe Thread
        SubThreadA mt1 = new SubThreadA();
        SubThreadB mt2 = new SubThreadB();

        //Exécution de sous-classe
        mt1.start();
        mt2.start();
    }
}

Après avoir terminé la description ci-dessus, cliquez avec le bouton droit sur Main.java> Exécuter l'application Java pour l'exécuter. C'est OK si les mots suivants sont affichés sur l'écran de la console.

Le fil A a démarré.
Le fil B a démarré.

3. Mise en œuvre de la méthode du sommeil

Ici, nous allons expliquer comment utiliser la méthode sleep de la classe Thread pour arrêter un thread pendant un certain temps.

La méthode sleep est utilisée en spécifiant l'heure à laquelle vous souhaitez vous arrêter dans l'argument en millisecondes. (1000 millisecondes = 1 seconde)

En outre, dans la méthode sleep, une exception InterruptedException peut se produire en raison d'une interruption, etc., il est donc nécessaire de la placer dans une instruction try-catch et de gérer l'exception.

Maintenant, exécutons "Sub Thread A" avec un délai de 3 secondes.

SubThreadA.java


package main;

public class SubThreadA extends Thread {
    public void run() {
        try {
        //3 secondes de sommeil
        Thread.sleep(3000);
        System.out.println("Le fil A a démarré.");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Cliquez avec le bouton droit sur Main.java> Exécuter l'application Java pour l'exécuter. Il est OK si le thread A est démarré 3 secondes après le thread B et que les mots sont affichés sur l'écran de la console dans l'ordre suivant.

Le fil B a démarré.
Le fil A a démarré.

4. Mise en œuvre de la méthode de jointure

Utilisez la méthode de jointure lorsque vous souhaitez attendre qu'un autre thread termine le traitement. Codez l'objet du thread .join () dont vous souhaitez surveiller l'arrêt.

De plus, comme avec la méthode sleep, une exception InterruptedException peut se produire en raison d'une interruption, etc., il est donc nécessaire de la placer dans une instruction try-catch et de gérer l'exception.

Maintenant, essayons de traiter "SubThreadB" une fois le traitement de "SubThreadA" terminé.

Main.java


package main;

public class Main {
    public static void main(String[] args) {
        try {
            SubThreadA mt1 = new SubThreadA();
            SubThreadB mt2 = new SubThreadB();

            mt1.start();
            mt1.join();  //Attendez que SubThreadA se termine
            mt2.start();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Cliquez avec le bouton droit sur Main.java> Exécuter l'application Java pour l'exécuter. Après un certain temps, il sera exécuté dans l'ordre des threads A → B, et c'est OK si les mots suivants sont affichés sur l'écran de la console.

Le fil A a démarré.
Le fil B a démarré.

à la fin

J'ai commencé mon blog personnel en 2020!

Sur la base des connaissances et de l'expérience acquises en tant qu'ingénieur indépendant, nous prévoyons de diffuser des informations sur les ingénieurs indépendants, des informations techniques informatiques, des informations sur l'industrie, des hacks de vie d'ingénieur et d'autres contenus.

Le nombre d'articles est encore faible, mais nous le mettons à jour chaque semaine, donc si vous êtes intéressé, veuillez jeter un coup d'œil.

https://yacchi-engineer.com/

Recommended Posts

[Java] Comment implémenter le multithreading
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Comment appliquer les conventions de codage en Java
Comment abaisser la version java
[Java] Comment utiliser Map
Java - Comment créer JTable
Comment utiliser java Facultatif
Comment réduire les images Java
Comment rédiger un commentaire java
Comment utiliser la classe Java
[Java] Comment afficher les Wingdings
Comment utiliser Java Map
Comment définir des constantes Java
Comment utiliser les variables Java
Comment convertir la base Java
[Rails] Comment mettre en œuvre le scraping
Comment initialiser un tableau Java
Résumé de la mise en œuvre des arguments par défaut en Java
Étudier Java # 6 (Comment écrire des blocs)
Comment créer un conteneur Java
Comment désassembler un fichier de classe Java
Comment utiliser HttpClient de Java (Post)
[Java] Comment utiliser la méthode de jointure
Comment apprendre JAVA en 7 jours
[Traitement × Java] Comment utiliser les variables
Comment décompiler un fichier de classe Java
[JavaFX] [Java8] Comment utiliser GridPane
Comment écrire une déclaration de variable Java
[Java] Essayez de mettre en œuvre à l'aide de génériques
Comment utiliser les méthodes de classe [Java]
[Rails] Comment mettre en œuvre le classement par étoiles
[Java] Comment utiliser List [ArrayList]
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment passer Oracle Java Silver
Essayez d'implémenter Yuma en Java
Comment activer Iterator Dojo (Java)
java Eclips Comment déboguer javaScript
[Traitement × Java] Comment utiliser les tableaux
Comment créer un tableau Java
Comment utiliser les expressions Java lambda
[Java] Comment utiliser la classe Math
Comment trouver les nombres premiers Java
Comment utiliser le type enum Java
Comment concaténer des chaînes avec Java
Comment vérifier Java installé sur Mac
Comment créer un résumé de calendrier Java
Comment implémenter la fonctionnalité de recherche dans Rails
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
[Java] Comment utiliser la classe File
Comment compiler Java avec VsCode & Ant
[Java] Résumez comment comparer avec la méthode equals
Essayez d'implémenter l'ajout n-aire en Java
[java] Résumé de la gestion des caractères