Différence entre l’interface Runnable et la classe Thread en java
Quelle est la différence entre Runnable et Thread ? – En Java, comme nous le savons tous, il existe deux manières pour créer des threads. L’un en héritant la classe Thread et l’autre en utilisant l’interface Runnable.
Dans la première approche, notre classe étend toujours la classe Thread. Il n’y a aucune chance d’étendre une autre classe. Par conséquent, nous manquons l’héritage. Dans la deuxième approche, tout en implémentant l’interface Runnable, nous pouvons étendre toute autre classe. Par conséquent, nous pouvons utiliser les avantages de l’héritage.
Pour les raisons ci-dessus, il est recommandé d’implémenter l’interface Runnable plutôt que d’étendre la classe Thread.
Définition de l’interface Runnable
Runnable est une interface qui se trouve dans le package java.lang. Nous pouvons définir un thread en implémentant l’interface Runnable. L’interface Runnable possède une seule méthode, run(), qui est implémentée par la classe qui implémente l’interface Runnable. Lorsque vous choisissez de définir un thread implémentant une interface Runnable, vous aurez le choix d’hériter d’autre classe. Lorsque vous créez plusieurs threads en implémentant l’interface Runnable, chaque thread partage la même instance de Runnable.
Programme Java pour créer un thread en implémentant l’interface Runnable.
// Définir notre thread class MyRunnablethread implements Runnable{ // taches du thread public void run(){ for(int i=0; i<10; i++){ System.Out.Println("Thread Fil"); } } } class TestThread{ // taches du thread princial public static void main(String args[]){ // Le thread principal a créé le thread fil MyRunnablethread rth = new MyRunnablethread (); // le thread principal crée le thread fil et transmet l'objet runnable Thread t = new Thread(rth); t.start(); for(int i=0; i<10; i++){ System.Out.Print("Thread Princial"); } } } // La Sortie Thread Princial Thread Fil Thread Fil Thread Fil Thread Princial Thread Princial Thread Princial Thread Fil Thread Fil Thread Fil Thread Fil Thread Princial Thread Princial Thread Princial Thread Princial Thread Fil Thread Fil Thread Princial Thread Princial Thread Fil
Définition de la classe Thread
Thread est une classe qui se trouve dans le package java.lang. La classe Thread étend la classe Object et implémente des interfaces Runnable. La classe Thread a des constructeurs et des méthodes pour créer et opérer sur le thread. Lorsque on crée plusieurs threads, chaque thread crée un objet unique et est associé à cet objet. Si vous créez un thread qui étend la classe Thread, vous ne pouvez pas étendre d’autres classes car Java ne prend pas en charge l’héritage multiple. Vous devez donc choisir d’étendre la classe Thread uniquement lorsque vous souhaitez remplacer d’autres méthodes de la classe Thread.
Programme Java pour créer un thread en héritant la classe Thread.
// Définir notre thread class Mythread extends Thread{ // taches du thread public void run(){ for(int i=0; i<10; i++){ System.Out.Println("Thread Fil"); } } } class TestThread{ // taches du thread princial public static void main(String args[]){ // Le thread principal a créé le thread fil Mythread t = new Mythread(); t.start(); for(int i=0; i<10; i++){ System.Out.Print("Thread Princial"); } } } // La Sortie Thread Princial Thread Fil Thread Fil Thread Fil Thread Princial Thread Princial Thread Princial Thread Fil Thread Fil Thread Fil Thread Fil Thread Princial Thread Princial Thread Princial Thread Princial Thread Fil Thread Fil Thread Princial Thread Princial Thread Fil
Table de comparaison
Thread | Runnable | |
---|---|---|
Présentation | Chaque thread crée un objet unique et s’y associe. | Plusieurs threads partagent les mêmes objets. |
L’utilisation | Un utilisateur doit étendre la classe Thread uniquement s’il souhaite surcharger les méthodes de la classe Thread. | Si vous voulez seulement la méthode run(), l’implémentation de Runnable est un meilleure choix. |
Le couplage | Étendre la classe Thread introduit un couplage fort car la classe contient du code de la classe Thread et également le travail affecté au thread | L’implémentation de l’interface Runnable introduit un couplage faible car le code de Thread est séparé du travail de threads. |
La mémoire | Comme chaque thread crée un objet unique, plus de mémoire est requise. | Comme plusieurs threads partagent le même objet, moins de mémoire est utilisée. |
Conclusion
Utiliser l’interface Runnable est un meilleur choix dans la plupart des cas. Cela signifie que la composition est une meilleure solution.