¿Por qué necesitamos pasar la instancia ejecutable mientras creamos los hilos usando la interfaz Runnable
?¿Por qué necesitamos un ejecutable para iniciar los hilos?
Respuesta
La razón por la que necesitamos pasar el objeto ejecutable al constructor del objeto de subproceso es que el subproceso debe tener alguna forma de llegar al método run()
que queremos que el subproceso se ejecute.
Tome por ejemplo un
public class CustomApplet extends Applet {
public void init() {
Runnable ot = new OurClass();
Thread th = new Thread(ot);
th.start();
}
}
Dado que ya no estamos reemplazando el método de la clase Thread run()
, el método predeterminado run()
de la clase Thread es ejecutado; este método por defecto run()
se parece a esto
public void run() {
if (ot!= null) {
ot.run();
}
}
Por lo tanto, ot
es el objeto ejecutable pasamos al constructor de la rosca. Por lo tanto, el hilo comienza a ejecutarse con el método run()
de la clase Thread, que llama inmediatamente al método run()
de nuestro objeto ejecutable.
¿Qué desea que haga el nuevo hilo? Es probable que desee ejecutar algún código. Pero, ¿qué código debe ejecutar? No puedes simplemente poner código en un hilo. Y Java no tiene punteros de función. Un pequeño truco para resolver ese problema es usar un objeto que implemente una función. Esa función es run
. Por lo tanto, el objeto debe tener un método run
. Eso es lo que hace la interfaz Runnable, asegúrate de que tenga un método de ejecución. Por lo tanto, si le damos un objeto Runnable, ¡el hilo sabe qué hacer!
+1 ...................... :) –
- 1. ¿Por qué necesitamos fibras
- 2. ¿Por qué necesitamos Thread.MemoryBarrier()?
- 3. ¿Por qué necesitamos un constructor privado?
- 4. ¿Por qué necesitamos C Unions?
- 5. ¿Por qué necesitamos struct? (C#)
- 6. ¿Por qué necesitamos mesa virtual?
- 7. ¿Por qué necesitamos ng-click?
- 8. ¿Por qué necesitamos usar Radix?
- 9. ¿Por qué necesitamos marcos burlones?
- 10. ¿Por qué necesitamos web-sockets?
- 11. ¿Por qué deberías bloquear los hilos?
- 12. ¿Por qué necesitamos una etiqueta fieldset?
- 13. ¿Por qué necesitamos servicios web RESTful?
- 14. ¿por qué necesitamos ClassMethods e InstanceMethods?
- 15. ¿Por qué necesitamos Application Server en Java?
- 16. ¿Por qué necesitamos usar NSAutoreleasepool para cada hilo?
- 17. ¿Por qué necesitamos parámetros de "salida"?
- 18. ¿por qué necesitamos zone_highmem en x86?
- 19. Patrón de diseño del generador: ¿por qué necesitamos un Director?
- 20. ¿Por qué necesitamos funcall en Lisp?
- 21. ¿Por qué necesitamos interfaces en Java?
- 22. ¿Por qué todavía necesitamos código generado?
- 23. ¿Por qué necesitamos delegados de C#
- 24. ¿Por qué los hilos IIS son tan preciados en comparación con los hilos regulares de CLR?
- 25. ¿Por qué incluso necesitamos el operador "delete []"?
- 26. ¿Por qué necesitamos el método ContinueWith?
- 27. ¿Por qué necesitamos este operador especial ===?
- 28. ¿Por qué necesitamos Propiedades en C#
- 29. ¿Por qué necesitamos patrones de diseño?
- 30. ¿Por qué necesitamos DOCTYPE para las páginas HTML/JSP?
¿La clase de subprocesos implementa automáticamente la interfaz ejecutable? –
Sí. lo hace .. –