"Un hilo o Thread en ingles es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea."
En fin, con los hilos podemos ejecutar una tarea, y mientras este la hace el programa puede seguir su curso o ejecutando otra. Un ejemplo, queremos que nuestro programa lea un fichero de texto muy grande y que linea a linea extraiga las filas que contenga el nombre Juan Perez. Ademas queremos que lea otro fichero igual de grande y lo guarde linea a linea en una base de datos.Si los ficheros son muy grandes como se dice,los procesos pueden demorar mucho, ¿porque no hacer los dos al mismo tiempo?. Si puedes usar dos Thread que al "mismo tiempo" ejecute los dos procesos. No se si este sea el ejemplo mas adecuado para el uso de Threads pero a si funcionan.
Ya con el concepto claro de Thread,basta de cháchara, detallaremos funcionalidad en java.
Cronometro: Simplemente es un hilo que se ejecuta con un for infinito, incrementa unas variables como lo son los segundos,minutos o horas según sea el caso los muestra en pantalla y luego se echa a dormir un segundo y después continua haciendo el mismo proceso.
/*
Clase que hereda de la clase Thread, usada
*Para pintar un cronometro
*Autor: LBVP
*Fecha:06-05-2011
*Licencia :GNU
*/
public class Cronometro extends Thread { //una clase que hereda de la clase Thread
public Cronometro(){// Contructor porque la clase es heredada
super();
}
public void run() {
int nuMin=0; //El Contador de minutos
int nuSeg=0; //El Contador de de segundos
int nuHora=0; //El Contador de Horas
try {//si ocurre un error al dormir el proceso(sleep(999))
for (; ;){ //inicio del for infinito
if(nuSeg!=59) {//si no es el ultimo segundo
nuSeg++; //incremento el numero de segundos
}else{
if(nuMin!=59){//si no es el ultimo minuto
nuSeg=0;//pongo en cero los segundos
nuMin++;//incremento el numero de minutos
}else{//incremento el numero de horas
nuHora++;
nuMin=0;//pongo en cero los minutos
nuSeg=0;//pongo en cero los segundos
}
}
System.out.println(nuHora+":"+nuMin+":"+nuSeg);//Muestro en pantalla el cronometro
sleep(999);//Duermo el hilo durante 999 milisegundos(casi un segundo, quintandole el tiempo de proceso)
}//Fin del for infinito
} catch (Exception ex) {
System.out.println(ex.getMessage());//Imprima el error
}
}
public static void main(String[] args) {
Cronometro c=new Cronometro(); //Intancio la clase
c.start(); //Ejecuto el metodo run del Thread
}// Fin main
}//Fin Clase
muy bien explicado, gracias
ResponderEliminar