Retour au cours

Introduction au Multithreading et à la classe Thread

Maîtrise de Java : De Zéro à Développeur Professionnel (Un parcours en 50 leçons)

Leçon 46 : Introduction au Multithreading

Le Multithreading permet à un programme d'exécuter plusieurs parties de son code de manière concurrente. Chaque chemin d'exécution concurrent est appelé un thread.

1. Processus vs Thread

  • Processus : Un environnement d'exécution qui possède son propre ensemble complet de ressources (mémoire, gestionnaires de fichiers). Plusieurs processus s'exécutent de manière indépendante.
  • Thread : Un sous-processus léger au sein d'un processus. Les threads partagent les ressources du processus (comme la mémoire). Cela rend la communication entre les threads très rapide mais introduit de la complexité (sécurité des threads).

2. Création d'un thread (Méthode 1 : Étendre Thread)

Le moyen le plus simple consiste à créer une sous-classe de Thread et à redéfinir la méthode run(), qui contient le code que le thread exécutera.

java public class MyThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName() + " est en cours d'exécution."); // Code de la tâche ici } }

// Utilisation : MyThread t1 = new MyThread(); t1.start(); // Invoque la méthode run() et démarre le thread de manière concurrente // t1.run(); // N'appelez PAS run() directement, cela s'exécute de manière synchrone !

3. Création d'un thread (Méthode 2 : Implémenter Runnable)

C'est la méthode préférée car elle permet à votre classe d'étendre une autre classe tout en définissant la tâche d'un thread (Java ne supportant que l'héritage simple).

java public class MyRunnable implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName() + " est en cours d'exécution."); } }

// Utilisation : Thread t2 = new Thread(new MyRunnable()); t2.start();

4. Cycle de vie d'un thread

Les threads passent par différents états :

  1. New : Objet thread créé.
  2. Runnable : Prêt à être exécuté (dans le pool de threads).
  3. Running : En cours d'exécution.
  4. Blocked/Waiting : Temporairement inactif (ex: en attente d'I/O ou d'un verrou).
  5. Terminated (Dead) : Exécution terminée.