Está usted en Indice > Construcción > Lenguajes > Java > Lecciones y Paso a Paso > Los Threads en Java
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Los Threads en Java (2)

Notas sobre el programa:

  • La clase Thread está en el package java.lang. Por tanto no es necesario el import.
  • El constructor public Thread(String str) recibie un parámetro que es la identificación del Thread.
  • El método run contiene el bloque de ejecución del Thread. Dentro de él, el método getName() devuelve el nombre del Thread (el que se ha pasado como argumento al constructor).
  • El método main crea dos objetos de clase ThreadEjemplo y los inicia con la llamada al método start(). (el cual inicia el nuevo thread y llama al método run() ).
  • Observa en la salida el primer mensaje, de finalización del thread main. La ejecución de los threads es asíncrona. Realiza la llamada al método start(), éste le devuelve control y continua su ejecución, independiente de los otros threads.
  • En la salida los mensajes de un thread y otro se van mezclando. La máquina virtual asigna tiempos a cada thread. 
La Interface Runnable

La interface Runnable proporciona un método alternativo a la utilización de la clase Thread, para los casos en los que no es posible hacer que nuestra clase extienda la clase Thread. Esto ocurre cuando nuestra clase, que deseamos correr en un thread independiente deba extender alguna otra clase. Dado que no existe herencia múltiple, nuestra clase no puede extender a la vez la clase Thread y otra más. En este caso nuestra clase debe implantar la interface Runnable, variando ligeramente la forma en que se crean e inician los nuevos threads. 

El siguiente ejemplo es equivalente al del apartado anterior, pero utilizando la interface Runnable:

public class ThreadEjemplo implements Runnable {
    public void run() {
        for (int i = 0; i < 5 ; i++) 
            System.out.println(i + " " + Thread.currentThread().getName());
        System.out.println("Termina thread " + Thread.currentThread().getName());
    }
    public static void main (String [] args) {
        new Thread ( new ThreadEjemplo() , "Pepe").start();
        new Thread ( new ThreadEjemplo() , "Juan").start();
        System.out.println("Termina thread main");
    }
}

Observese en este caso:

  • Se implanta la interface Runnable en lugar de extender la clase Thread.
  • El constructor que había antes no es necesario.
  • En el main observa la forma en que se crea el thread. Esa expresión es equivalente a:

    ThreadEjemplo ejemplo = new ThreadEjemplo();
    Thread thread = new Thread ( ejemplo , "Pepe") ;
    thread.start();

    • Primero se crea la instancia de nuestra clase.
    • Después se crea una instancia de la clase Thread, pasando como parámetros la referencia de nuestro objeto y el nombre del nuevo thread.
    • Por último se llama al método start de la clase thread. Este método iniciará el nuevo thread y llamará al método run() de nuestra clase.
  • Por útlimo, obsérvese la llamada al método getName() desde run(). getName es un método de la clase Thread, por lo que nuestra clase debe obtener una referencia al thread propio. Es lo que hace el método estático currentThread() de la clase Thread.
El ciclo de vida de un Thread

El gráfico resume el ciclo de vida de un thread:



Usuarios que han visto este tema también han visto...

- Frame lookup Swing en Java
- Precisión infinita en Java
- Aplicaciones a pantalla completa.
- Como crear una aplicación con Struts paso a paso en Java
- Java en Hebras


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 30-08-2008 a las 18:05:58