Trabajo de coclo de vida

Solo disponible en BuenasTareas
  • Páginas : 5 (1105 palabras )
  • Descarga(s) : 0
  • Publicado : 15 de febrero de 2012
Leer documento completo
Vista previa del texto
Hilos en Java(Threads) parte 2
Retomando el artículo anterior...

- Un hilo en Java es:
+ Una instancia de la clase java.lang.Thread
+ Un proceso en ejecución

- En una aplicación Java, el hilo principal es el derivado de la clase main, al cual llamamos proceso o hilo main.

- Cuando se trata de hilos, muy pocas cosas está garantizadas.
- Los principales métodos a tomar en cuenta con elmanejo de los hilos son: start(), yield(), sleep() y run().

- Toda la acción o trabajo sucede dentro del método run().

- Para definir e instanciar un nuevo Thread (hilo, proceso) existen 2 formas:
+ Extendiendo (o heredando) a la clase java.lang.Thread
+ Implementando la interfaz Runnable

- Siempre se necesita un objeto tipo Thread para realizar el trabajo, independientemente siextiendes la clase Thread o implementas Runnable.

- Puedes pasar una misma instancia de una clase que implementa Runnable a diversos objetos de tipo Thread.
Continuando con lo visto anteriormente, existen diversos tipos de constructores a partir de los cuales se puede crear un hilo, algunos de los más importantes son:

+ Thread()
+ Thread(objetoRunnable)
+ Thread(objetoRunnable, String nombre)+ Thread(String nombre)
Una vez que creamos e instanciamos un objeto tipo Thread, se dice que el objeto está en un estado 'new' o 'nuevo', es decir, ya existe pero aún no ha empezado con su trabajo, no está 'vivo'. Una vez que mandamos llamar al método start(), el hilo es considerado vivo o alive y se le considera como un hilo o proceso muerto una vez que el método run() fue completado. Existe unmétodo para saber si el hilo está vivo o en ejecución, el método isAlive().

Comenzando con el trabajo::
Hasta ahora sabemos cómo crear el objeto tipo Thread e instanciarlo y sabemos que debe de estar en un estado vivo para que realice su función, para ello se utiliza el método start().

hilo.start();
Se debe de llamar al método start() a través de una instancia de la clase Thread. Una vezque llamamos al método start() sucede lo siguiente:

+ Un nuevo proceso de ejecución comienza (con su propia pila de información).
+ El hilo o proceso cambia de estado nuevo o new a estado de ejecución o runnable.
+ Cuando el hilo tenga su turno de ejecutarse, el método run() del objeto al que refiere se ejecuta.

P. ej.

public class Hilos {

public static void main(String[] args){System.out.println("Dentro de main...");
HiloNuevo hn = new HiloNuevo();
Thread nuevoHilo = new Thread(hn);
nuevoHilo.start();
}
}

class HiloNuevo implements Runnable{

public HiloNuevo(){
System.out.println("Comenzando un HiloNuevo...");

}

public void run(){
System.out.println("Llamando al método run de HiloNuevo...");
for(int i=0;i<5;i++)
{
System.out.println(i);
}System.out.println("Terminando el trabajo...");
}

}

Al ejecutar el código anterior nos da un resultado como el siguiente:

Dentro de main...
Comenzando un HiloNuevo...
Llamando al método run de HiloNuevo...
0
1
2
3
4
Terminando el trabajo...
Es importante tomar en cuenta que al llamar el método start(), se ejecuta el trabajo definido en el método run() en un nuevo e independienteproceso, de igual manera podemos llamar directamente al método run() y el mismo trabajo se ejecutará pero no comenzará un proceso independiente y no tendrá sentido que utilicemos los hilos.

Para saber qué hilo se encuentra en ejecución en un momento determinado, existe el método estático Thread.currentThread().getName() el cual te devuelve un valor de tipo cadena con el nombre del hilo en ejecución,si no has definido un nombre con el método setName(), de igual manera el proceso lo tendrá, algo muy parecido a Thread-0.

Ejecutando varios hilos al mismo tiempo::

Vamos a analizar un ejemplo de 3 hilos realizando el mismo trabajo, comenzaremos con una clase que implementa la interfaz Runnable, la cual es instanciada y enviada a 3 diferentes hilos, posteriormente le damos un nombre a cada...
tracking img