Comprendre la distinction entre Thread.start() et Thread.run()
Lorsqu'ils travaillent avec le multithreading en Java, les programmeurs rencontrent deux clés méthodes : Thread.start() et Thread.run(). Bien que leurs noms puissent suggérer des fonctionnalités similaires, elles répondent à des objectifs nettement différents.
Que font ces méthodes ?
Thread.start() :
Thread.run() :
Pourquoi ne pouvons-nous pas simplement appeler Thread.run ()?
Si Thread.run() exécute également la méthode run(), pourquoi ne pouvons-nous pas simplement l'appeler à la place de Thread.start() ? La raison réside dans l'isolation et l'exécution indépendante fournies par le multithreading.
L'appel de Thread.run() exécute le code dans le thread actuel, et non dans un thread séparé. Cela signifie que tout code de la méthode run() interagit toujours avec et affecte les ressources du thread actuel. Ce n'est pas le but recherché du multithreading, qui permet l'exécution simultanée de tâches.
Exemple illustrant la différence :
Considérez le code suivant :
public class ThreadExample { public static void main(String[] args) { Thread t1 = new Thread(() -> System.out.println("Thread 1")); Thread t2 = new Thread(() -> System.out.println("Thread 2")); // Here, we call Thread.start() and Thread.run(): t1.start(); // Starts Thread 1 in a separate thread t2.run(); // Executes Thread 2 in the current thread System.out.println("Main Thread"); } }
Sortie :
Thread 1 Main Thread
Appel Thread.start() sur t1 crée un nouveau thread et exécute la méthode run() dans ce thread, lui permettant d'imprimer "Thread 1". D'un autre côté, appeler Thread.run() sur t2 exécute la méthode run() dans le thread actuel (c'est-à-dire principal), en contournant la création d'un nouveau thread. Cela a pour conséquence que le "Thread 2" n'est pas imprimé, car il n'est jamais exécuté dans un thread séparé.
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!