Maison  >  Article  >  Java  >  Cap Programmation avec plusieurs threads

Cap Programmation avec plusieurs threads

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-22 05:38:17911parcourir

Principales compétences et concepts
• Comprendre les principes fondamentaux de la création de plusieurs fils de discussion
• Connaître la classe Thread et l'interface Runnable
• Créer un fil de discussion
• Créez plusieurs fils de discussion
• Déterminer quand un fil de discussion se termine
• Utiliser les priorités des fils de discussion
• Comprendre la synchronisation des threads
• Utilisez des méthodes synchronisées
• Utilisez des blocs synchronisés
• Promouvoir la communication entre les fils de discussion
• Suspendre, reprendre et arrêter les discussions

Threads : Ce sont des chemins d'exécution indépendants au sein d'un programme.
Multitâche : Il peut être basé sur des processus (plusieurs programmes) ou des threads (plusieurs tâches dans un même programme).
Avantages :
Une plus grande efficacité lors de l'utilisation du temps d'inactivité.
Meilleure utilisation des systèmes multicœurs/multiprocesseurs.

Création et gestion des fils de discussion

Classes et interfaces :
Thread : Classe qui encapsule les threads.
Runnable : Interface utilisée pour définir des threads personnalisés.

Méthodes de classe de fil de discussion courantes :

  • getName() : renvoie le nom du fil de discussion.
  • getPriority() : renvoie la priorité.
  • isAlive() : vérifie si le thread est toujours en cours d'exécution.
  • join() : attend la fin du fil de discussion.
  • run() : Définit le point d'entrée du thread.
  • sleep(long ms) : suspend le fil de discussion pendant un certain temps.
  • start() : démarre l'exécution du thread.

Créer des fils de discussion :

  • Implémentation de Runnable :
class MyThread implements Runnable {
    String threadName;

    MyThread(String name) {
        threadName = name;
    }

    public void run() {
        System.out.println(threadName + " starting.");
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(400);
                System.out.println("In " + threadName + ", count is " + i);
            }
        } catch (InterruptedException e) {
            System.out.println(threadName + " interrupted.");
        }
        System.out.println(threadName + " terminating.");
    }
}

public class UseThreads {
    public static void main(String[] args) {
        System.out.println("Main thread starting.");

        MyThread myThread = new MyThread("Child #1");
        Thread thread = new Thread(myThread);
        thread.start();

        for (int i = 0; i < 50; i++) {
            System.out.print(".");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println("Main thread interrupted.");
            }
        }
        System.out.println("Main thread ending.");
    }
}

Résultat attendu :

Main thread starting.
.
Child #1 starting.
..
In Child #1, count is 0
...
In Child #1, count is 1
...
Main thread ending.

Extension de classe de fil :

class MyThread extends Thread {
    MyThread(String name) {
        super(name);
    }

    public void run() {
        System.out.println(getName() + " starting.");
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(400);
                System.out.println("In " + getName() + ", count is " + i);
            }
        } catch (InterruptedException e) {
            System.out.println(getName() + " interrupted.");
        }
        System.out.println(getName() + " terminating.");
    }
}

public class UseThreads {
    public static void main(String[] args) {
        System.out.println("Main thread starting.");

        MyThread thread = new MyThread("Child #1");
        thread.start();

        for (int i = 0; i < 50; i++) {
            System.out.print(".");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println("Main thread interrupted.");
            }
        }
        System.out.println("Main thread ending.");
    }
}

remarque : La méthode sleep() fait suspendre l'exécution du thread dans lequel elle est appelée
pendant la période spécifiée de millisecondes.

table à livres
Cap Programação com várias threads

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