Buscar en ELMED

domingo, 6 de mayo de 2012

Cronometro Usando Thread en java

Los hilos, es un concepto aplicado que desconocemos bastante aquellos que nos iniciamos en la programación, aquí el concepto según Wikipedia .
"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



1 comentario: