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.
La structure des dossiers de la source d'échantillon créée cette fois est la suivante.
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. ..
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é.");
}
}
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é.
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é.
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é.
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