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

Runnable run() vs Thread start() : quelle est la différence clé ?

Barbara Streisand
Libérer: 2024-12-21 22:55:31
original
117 Les gens l'ont consulté

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

Runnable run() vs Thread start()

Question :

En simultané En programmation Java, l'interface Runnable définit une méthode run() qui est le point d'entrée d'une tâche. De même, la classe Thread possède une méthode start() qui lance un nouveau thread d’exécution. Quelle est la principale différence entre ces deux méthodes ?

Réponse :

La distinction fondamentale réside dans la création et l'exécution du thread :

Exécution exécutable () : Aucune création de thread

  • L'appel direct de Runnable.run() ne crée pas de nouveau thread.
  • Au lieu de cela, il exécute la méthode run() dans le thread d'exécution actuel.
  • Cette approche convient lorsque la tâche est légère et ne nécessite pas son propre thread dédié.
🎜>

Thread start() : Création de fil

  • L'appel de Thread.start() initie un nouveau thread d'exécution.
  • Dans le nouveau thread, la méthode run() de l'objet Runnable associé est exécutée.
  • L'utilisation de Thread.start() permet le parallélisme en divisant la tâche en tâches distinctes. threads qui s'exécutent simultanément.

Exemple :

Considérons deux classes, R1 et R2, implémentant l'interface Runnable :
class R1 implements Runnable {
    public void run() { ... }
}

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

Dans l'extrait de code suivant, r1.run() et r2.run() sont invoqués directement, ce qui signifie qu'aucun nouveau thread n'est créé :
public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();

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

En revanche, le code suivant crée deux nouveaux threads, t1 et t2, et démarre eux :
public static void main() {
    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

Dans ce code, les tâches associées à r1 et r2 seront exécutées simultanément au sein des threads nouvellement créés.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal