En Java, quelle est la manière correcte de créer un thread ?

Création d'un thread en Java

En Java, il existe deux manières principales de créer un thread :

  1. En implémentant l'interface Runnable.
  2. En étendant la classe Thread.

Implémentation de l'interface Runnable

L'interface Runnable est plus préférable pour créer un thread car elle ne nécessite pas d'hériter d'une classe (Java ne supporte pas l'héritage multiple). Vous pouvez simplement implémenter cette interface pour que chaque instance de votre classe puisse fonctionner comme un thread. Voici un exemple :

public class MonThread implements Runnable {
    public void run() {
        // Code à exécuter dans le thread
    }
}

MonThread mt = new MonThread();
new Thread(mt).start();

Dans cet exemple, nous avons une classe MonThread qui implémente l'interface Runnable. La méthode run est le point d'entrée du thread et contiendra le code que vous souhaitez exécuter. Pour démarrer le thread, vous créez une nouvelle instance de Thread en lui passant une instance de votre classe et appelez la méthode start.

Extension de la classe Thread

L'autre façon de créer un thread en Java est d'étendre la classe Thread et de redéfinir la méthode run. C'est une méthode simple, directe, mais moins flexible, car une fois que vous héritez de la classe Thread, vous ne pouvez pas hériter d'une autre classe.

public class MonThread extends Thread {
    public void run() {
        // Code à exécuter dans le thread
    }
}

MonThread mt = new MonThread();
mt.start();

Dans ce cas, MonThread hérite de la classe Thread. La méthode run est redéfinie pour inclure le code que vous souhaitez exécuter. Pour démarrer le thread, vous créez une nouvelle instance de votre classe et appelez la méthode start.

Conclusion

Ces deux méthodes sont correctes pour créer un thread en Java. Toutefois, l'interface Runnable est généralement privilégiée lorsque vous avez besoin de travailler avec plusieurs threads, car elle fournit une plus grande flexibilité et permet de mieux respecter le principe de responsabilité unique.

Trouvez-vous cela utile?