¿Cuál es la diferencia entre Thread.start() y Thread.run()?

Resuelto Saurabh Gokhale asked hace 14 años • 9 respuestas

¿Por qué llamamos al start()método, que a su vez llama al run()método?
¿ No podemos hacer una llamada directamente a run()?

Por favor dé un ejemplo donde haya una diferencia.

Saurabh Gokhale avatar Apr 20 '10 17:04 Saurabh Gokhale
Aceptado

No, no puedes. Llamar a run ejecutará run()el método en el mismo hilo, sin iniciar un nuevo hilo.

Marko avatar Apr 20 '2010 10:04 Marko

¿Por qué llamamos al start()método, que a su vez llama al run()método?

No, eso es impreciso. start()a su vez no llama al método de ejecución. en su lugar, inicia el hilo que ejecuta el método de ejecución. Esto es nativo.

¿ No podemos hacer una llamada directamente a run()?

Si llama run()directamente, no inicia el hilo, simplemente ejecuta el método en el mismo método de la persona que llama.

Por favor dé un ejemplo donde haya una diferencia.

Hay millones en la web. Por eso no duplico.

Chez avatar Apr 20 '2010 10:04 Chez

En realidad thread.start()crea un nuevo hilo y tiene su propio escenario de ejecución.

pero thread.run()sin crear ningún hilo nuevo, sino que ejecuta el método de ejecución en el hilo en ejecución actual.

Entonces, muchachos, si lo están utilizando thread.run(), piensen de qué sirve el subproceso múltiple si solo desean que un subproceso ejecute todos los métodos de ejecución.

aditya avatar Oct 30 '2012 07:10 aditya

Porque start() no solo llama a run(). Comienza un nuevo hilo y en ese hilo llama a ejecutar().

pauljwilliams avatar Apr 20 '2010 10:04 pauljwilliams