HILOS en JAVA

HILOS en JAVA

Un programa multihilo es la programación por el cual se dividen los programas en dos o más procesos que se pueden ejecutar en paralelo. La clase Thread encapsula todo el control necesario sobre los hilos. Con el objeto Thread hay métodos que controlan si el hilo se esta ejecutando, esta durmiendo, en suspenso o detenido.

Los métodos de la clase Thread:

currentThread:  Representa al hilo que esta ejecutándose en ese momento.

yield:                      Asegura que los hilos de menor prioridad no sufran inanición.

sleep:                      Pone a dormir al hilo en curso durante n milisegundos.

start:                      Crea un hilo de sistema y ejecuta. Luego llama al método run.

run:                           Es el cuerpo del hilo. Es llamado por el método start.

stop:                        Provoca la destrucción del hilo.

suspend:                 Detiene el hilo, pero no lo destruye. Puede ejecutarse de nuevo.

resume:                   Para revivir un hilo suspendido.

setName:                 Asigna un nombre al hilo en curso.

getName:                 Devuelve el nombre del  hilo en ejecución.

setPriority()      Establece la prioridad del hilo. De 1 a 10.

getPriority:       Devuelve la prioridad del hilo en curso.

 

EJEMPLO: En el siguiente programa se genera un número aleatorio, que será el retardo de cada hilo. Por tanto según el número generado saldrá primero uno y luego el otro en orden aleatorio.

import java.util.*;

class hilos extends Thread{
int tiempo;
String nombre;

public hilos(String nomb,int tempo){
tiempo=tempo;
nombre=nomb;
}

public void run(){
try{sleep(tiempo);}
catch(Exception e){
System.out.println("Error");
}
System.out.println("Hilo: "+nombre+" Temp: "+tiempo);
}

public static void main(String args[]){
hilos h1=new hilos("Uno",(int)(Math.random()*2000));
hilos h2=new hilos("Dos",(int)(Math.random()*2000));

h1.start();
h2.start();
}
}

EJEMPLO: Dos hilos se crean utilizando el método setPriority con dos niveles de prioridad distintos. Se inician ambos y se les permite la ejecución durante 10 segundos. Cada hilo gira en torno a un bucle que cuenta cuantas veces se ejecuto el mismo.

class pulso implements Runnable{
int pulsa=0;
private Thread hilo;
private boolean corre=true;

public pulso(int p){
hilo=new Thread(this);
hilo.setPriority(p);
}

public void run(){
while(corre){
pulsa++;
}
}
public void stop(){
corre=false;
}
public void start(){
hilo.start();
}
}

class hilos{

public static void main(String args[]){
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
pulso h1=new pulso(Thread.NORM_PRIORITY+2);
pulso h2=new pulso(Thread.NORM_PRIORITY-2);

h1.start();
h2.start();

try{Thread.sleep(10000);}
catch(Exception e){}
h1.stop();
h2.stop();

System.out.println(h1.pulsa+" contra "+h2.pulsa);
}
}

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *