Maison > Java > javaDidacticiel > Thread.start() vs Runnable.run() : quelle est la différence en multithreading ?

Thread.start() vs Runnable.run() : quelle est la différence en multithreading ?

Mary-Kate Olsen
Libérer: 2025-01-03 16:53:39
original
364 Les gens l'ont consulté

Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?

Thread.start() et Runnable.run() en multithreading

Lorsque nous nous penchons sur le multithreading, nous rencontrons souvent deux méthodes cruciales : Thread .start() et Runnable.run(). Comprendre la distinction entre eux est essentiel pour une gestion efficace des threads.

Runnable.run()

La méthode run() est un élément clé de la mise en œuvre de l'interface Runnable. Il définit le code qui doit être exécuté en tant que thread distinct. En appelant run(), vous lancez essentiellement l'exécution du code implémenté dans le thread appelant.

Thread.start()

Contrairement à run(), appelant Thread .start() n'exécute pas directement le code du thread associé. Au lieu de cela, il lance un nouveau thread et délègue l'exécution de la méthode run() à ce nouveau thread. Le nouveau thread fonctionne indépendamment du thread appelant, permettant un véritable multithreading.

Différence clé

La différence fondamentale réside dans la création ou non de plusieurs threads. L'appel de run() exécute simplement le code dans le thread actuel, tandis que start() lance un nouveau thread pour exécuter le code.

Exemple

Considérons deux classes Runnable, R1 et R2 :

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}
Copier après la connexion

Cas 1 : Utilisation run()

R1 r1 = new R1();
R2 r2 = new R2();

r1.run();
r2.run();
Copier après la connexion

Dans ce scénario, r1 et r2 exécutent leurs méthodes run() séquentiellement dans le même thread. Aucun thread supplémentaire n'est créé.

Cas 2 : Utilisation de start()

R1 r1 = new R1();
R2 r2 = new R2();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);

t1.start();
t2.start();
Copier après la connexion

Lorsque start() est invoqué sur t1 et t2, de nouveaux threads sont créés pour exécutez les méthodes run() de r1 et r2, respectivement. Il en résulte un véritable multithreading, chaque thread s'exécutant indépendamment.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal