Implémentation de Thread en Java : comparaison de Thread.start() et Thread.run()
En Java, un aspect fondamental de la concurrence est la création et l'exécution de threads. Comprendre la distinction entre Thread.start() et Thread.run() est crucial dans ce contexte.
Thread.start() est la méthode responsable du lancement d'un nouveau thread d'exécution. Lorsqu'il est invoqué, il configure la pile du thread, définit son état initial sur exécutable et planifie son exécution par la machine virtuelle Java (JVM). En revanche, Thread.run() exécute directement le code de la méthode run() sur le thread appelant, sans en créer un nouveau.
Pourquoi utiliser Thread.start() ?
L'emploi de Thread.start() sur Thread.run() est essentiel car :
Invocation directe de Thread.run()
Pendant qu'il peut sembler pratique d'appeler Thread.run(), cette approche doit être évitée pour les raisons suivantes :
Exemple
Considérez le code suivant :
public class ThreadExample { public static void main(String[] args) { Runnable task = () -> System.out.println("This is a new thread!"); Thread thread = new Thread(task); // Direct invocation of run() - no multi-threading occurs. // thread.run(); // Correct multi-threading using start(). thread.start(); } }
Lorsque vous commentez l'invocation directe de Thread.run (), la sortie montrera qu'un nouveau thread a été créé et exécuté, tandis que l'exécution directe de run() exécutera le code dans le thread principal, produisant une sortie sans multi-threading.
Conclusion
En Java, appeler Thread.start() est l'approche privilégiée pour créer et exécuter des threads. Thread.run(), en revanche, ne doit pas être utilisé directement car cela entrave les capacités de multi-threading et de gestion des threads.
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!