Maison > Java > javaDidacticiel > Quelle est la différence entre appeler Thread.start() et Thread.run() en Java ?

Quelle est la différence entre appeler Thread.start() et Thread.run() en Java ?

Mary-Kate Olsen
Libérer: 2024-11-13 11:17:02
original
646 Les gens l'ont consulté

What is the difference between calling Thread.start() and Thread.run() in Java?

Appel de Thread.start() vs Thread.run() en Java

Introduction :
Dans Java, le multithreading fournit un mécanisme d'exécution simultanée de tâches. L'un des composants clés du multithreading est la classe Thread. Pour exécuter un thread, on peut soit appeler Thread.start() ou Thread.run(). Cet article vise à clarifier les différences entre ces deux méthodes et à démontrer quand cela fait une différence.

Comprendre la différence :
L'appel de Thread.start() sur un objet thread initie un nouveau fil d'exécution. Cela demande au planificateur de threads du système d'exploitation de créer un nouveau thread et de planifier son exécution. Une fois démarré, le thread devient indépendant et s'exécute en même temps que le thread principal.

D'autre part, appeler Thread.run() sur un objet thread exécute simplement la méthode run() du thread dans le thread actuel . Dans ce cas, le thread n'est pas programmé pour s'exécuter indépendamment et la méthode run() est exécutée séquentiellement après l'appel de la méthode run().

Pourquoi démarrer un thread au lieu d'appeler Run ?
Le démarrage d'un thread présente plusieurs avantages par rapport à l'appel direct de run() :

  • Concurrence : En démarrant un thread, plusieurs threads peuvent s'exécuter simultanément, en utilisant les ressources disponibles traitement des ressources et amélioration des performances de l'application.
  • Gestion des threads : Le système d'exploitation gère les threads, y compris la planification et le changement de contexte, libérant l'application de ces responsabilités.
  • Simplicité du code :Le démarrage d'un thread est un moyen plus concis et plus simple d'obtenir la concurrence que la gestion manuelle des threads en appelant directement run().

Exemple démontrant la différence :
Pour illustrer la différence, considérons l'exemple suivant :

public class ThreadExample extends Thread {

    @Override
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        ThreadExample thread = new ThreadExample();

        // Call the run() method directly - executed in the main thread
        thread.run();

        // Start the thread - runs concurrently with the main thread
        thread.start();
    }
}
Copier après la connexion

Lorsque ce code est exécuté avec l'appel à la méthode run(), le résultat sera :

Thread is running...
Copier après la connexion
Copier après la connexion

Dans ce cas, la méthode run() s’exécute dans le thread principal et il n’y a pas de concurrence. Cependant, lorsque le code est exécuté avec l'appel à la méthode start(), la sortie sera :

Thread is running...
Copier après la connexion
Copier après la connexion

... suivi de la sortie du thread principal, indiquant que le thread s'exécute simultanément.

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