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
Mary-Kate Olsenoriginal
2025-01-03 16:53:39271parcourir

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() { ... }
}

Cas 1 : Utilisation run()

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

r1.run();
r2.run();

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();

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:
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