Maison > Java > javaDidacticiel > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-16 19:00:03
original
413 Les gens l'ont consulté

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

Comprendre la distinction entre Thread.start() et Thread.run()

Lorsque vous travaillez avec des threads en Java, il est crucial de comprendre les rôles des méthodes start() et run(). Ils jouent des fonctions distinctes dans la gestion du cycle de vie d'un thread.

Thread.start() vs Thread.run()

La méthode Thread.start() initialise un nouveau thread avec le code défini dans la méthode run(). Lors de son appel, il crée un thread d'exécution distinct et exécute la méthode run() en même temps que le thread qui a appelé start().

En revanche, Thread.run() exécute directement le code dans run() méthode dans le fil de discussion actuel. Il ne crée pas de nouveau thread, ce qui signifie que le code s'exécutera séquentiellement avec le thread appelant.

Exemple démontrant la différence

Pour illustrer la différence entre les deux méthodes , considérez ce qui suit exemple :

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Thread " + this.getName() + ": " + i);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        
        // Calling Thread.start()
        thread1.start();
        
        // Calling Thread.run() directly
        thread1.run();
    }
}
Copier après la connexion

Sortie :

Thread Thread-0: 0
Thread Thread-0: 1
Thread Thread-1: 0
Thread Thread-1: 1
Thread Thread-1: 2
Thread Thread-1: 3
Thread Thread-1: 4
Thread Thread-1: 5
Thread Thread-1: 6
Thread Thread-1: 7
Thread Thread-1: 8
Thread Thread-1: 9
Copier après la connexion

Dans cet exemple, l'appel de start() crée un nouveau thread (Thread-0) qui exécute l'exécution ( ) en même temps que le thread principal. Par conséquent, la sortie entrelace les messages des deux threads.

Cependant, appeler directement run() ne crée pas de nouveau thread. Au lieu de cela, il exécute la méthode run() dans le thread principal (Thread-1). En conséquence, les messages de la méthode run() sont imprimés séquentiellement après l'appel start().

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