t.start()
est la méthode que la bibliothèque fournit pour que votre code appelle lorsque vous voulez un nouveau thread.
r.run()
est la méthode que vous fournissez pour que la bibliothèque appelle dans le nouveau thread.
La plupart de ces réponses manquent de vue d'ensemble, c'est-à-dire qu'en ce qui concerne le langage Java, il n'y a pas plus de différence entre t.start()
et r.run()
qu'il n'y a entre deux autres méthodes.
Ce ne sont que des méthodes. Ils courent tous les deux dans le fil qui les a appelés . Ils font tous les deux ce pour quoi ils ont été codés, puis ils retournent tous les deux, toujours dans le même fil, à leurs appelants.
La plus grande différence est que la majeure partie du code de t.start()
est du code natif tandis que, dans la plupart des cas, le code r.run()
de sera pur Java. Mais ce n'est pas vraiment une différence. Le code est le code. Le code natif est plus difficile à trouver et plus difficile à comprendre lorsque vous le trouvez, mais c'est toujours du code qui indique à l'ordinateur quoi faire.
Alors, qu'est-ce que ça t.start()
fait?
Il crée un nouveau thread natif, il organise l'appel de ce thread t.run()
, puis il indique au système d'exploitation de laisser le nouveau thread s'exécuter. Puis il revient.
Et que fait r.run()
-il?
Le plus drôle, c'est que la personne qui pose cette question est celle qui l'a écrite . r.run()
fait tout ce que vous (c'est-à-dire le développeur qui l'a écrit) avez conçu.