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() :
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(); } }
Lorsque ce code est exécuté avec l'appel à la méthode run(), le résultat sera :
Thread is running...
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...
... 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!