Professional Documents
Culture Documents
HILOS THREAD
Hilos (thread)
Una thread es un nico flujo de control dentro de un programa. Puede haber varios hilos en ejecucin simultnea. La finalizacin depende del hilo (Thread.suspend, stop estn
depreciados) Sin embargo, toda thread en un programa an comparte muchos recursos, tales como espacio de memoria y archivos abiertos. Threads tambin son llamadas procesos livianos (lightweight process).
activeCount
checkAccess currentThread destroy getName getPriority getThreadGroup interrupt isAlive join isInterrupted run
setName
setPriority sleep start toString yield
start(), el hilo pasa al estado "corrible". Corrible (Runnable):Este estado puede subdividirse en dos: Corriendo y encolado. Bloqueada (not Runnable): Se ingresa cuando: se invoca suspend(), wait(), sleep(), el hilo espera por alguna operacin de I/O, o el hilo invoca join() de otro hilo para espera por su trmino. El hilo vuelve al estado Corrible cuando el evento por que espera ocurre. Muerta (Dead): Se llega a este estado cuando el hilo termia su ejecucin (concluye el mtodo run) o es detenida por otro hilo llamando al su mtodo stop().
Para crear un hilo debes heredar o implementar una clase de esta forma:
public class hilos extends Thread{ public void run(){ //Aqui copiamos cualquier funcin } } Public class hilos implements Runnable{ public void run(){ //Aqu copiamos cualquier funcin } }
de ejecucin continua en ejecucin hasta que finaliza el tiempo de retardo que se impone con el mtodo sleep, de tal forma que acaba antes de ejecutarse el metodo principal en el hilo inicial, que el hilo hijo creado. La sentencia:
nuevoHilo.start().
Mi primer hilo
public class PrimerHilo implements Runnable { static final short limites= 1000; private short limiteI = 0; @Override public void run() { while(limiteI ++ < limites){ System.out.print("El hilo actual es: "); System.out.println(Thread.currentThread().toString()); try{ Thread.currentThread().sleep(100); }catch(InterruptedException e){ System.out.println("Hilo hijo interrumpido"); } System.exit(1); } } }
Mi primer hilo
public static void main(String[] args) { PrimerHilo destino = new PrimerHilo(); Thread nuevoHilo = new Thread(destino, "Nuevo hilo"); nuevoHilo.start(); System.out.println("El hilo principal ha terminado"); }
Ejemplo2:
En este ejemplo se muestra como se puede parar el
nuevo hilo antes de que termine su ejecucin. Para esto se crea un nuevo hilo auxiliar con la misma referencia del que se quiere detener, se asigna a null la referencia del hilo que se quiere detener y se aplica el mtodo interrupt() al hilo auxiliar
Segundo hilo
public class segundoHilo implements Runnable{ static final short limiteS = 1000; private short limiteI = 0; public void run(){ while(limiteI++ < limiteS){ System.out.print("El hilo actual es: "); System.out.println(Thread.currentThread().toString()); try{ Thread.currentThread().sleep(100); }catch(InterruptedException e){ System.out.println("Interrumpido"); System.out.println("El hilo hijo"); } System.exit(1); } } }
Segundo hilo
public static void main(String[] args) { segundoHilo destinys = new segundoHilo(); Thread newhilo = new Thread(destinys, "Nuevo Hilo"); newhilo.start(); Thread auxhilo = newhilo; newhilo=null; auxhilo.interrupt(); System.out.println("El hilo principal "); System.out.println("ha terminado"); }