2011-05-18 11 views

Respuesta

6

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.

+0

¿La clase de subprocesos implementa automáticamente la interfaz ejecutable? –

+0

Sí. lo hace .. –

5

¿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!

+0

+1 ...................... :) –

Cuestiones relacionadas