t.start()
es el método que la biblioteca proporciona para que su código llame cuando desee un nuevo hilo.
r.run()
es el método que se proporciona para la biblioteca para llamar en el nuevo hilo.
La mayoría de estas respuestas pasan por alto el panorama general, que es que, en lo que respecta al lenguaje Java, no hay más diferencia entre t.start()
y r.run()
entre cualquier otro método.
Ambos son solo métodos. Ambos corren en el hilo que los llamó . Ambos hacen lo que sea que hayan sido codificados, y luego ambos regresan, aún en el mismo hilo, a sus interlocutores.
La mayor diferencia es que la mayoría del código t.start()
es código nativo , mientras que, en la mayoría de los casos, el código r.run()
será Java puro. Pero eso no es una gran diferencia. El código es el código. El código nativo es más difícil de encontrar y más difícil de entender cuando lo encuentra, pero sigue siendo solo un código que le dice a la computadora qué hacer.
Entonces, ¿qué hace t.start()
?
Crea un nuevo subproceso nativo, organiza la llamada de ese subproceso t.run()
y luego le dice al sistema operativo que deje que se ejecute el nuevo subproceso. Entonces vuelve.
¿Y que hace r.run()
?
Lo curioso es que la persona que hace esta pregunta es la persona que la escribió . r.run()
hace lo que usted (es decir, el desarrollador que lo escribió) diseñó para hacer.