Jueves, 25 de junio de 2015

Hilos en Netbeans.




Uno de las cosas más útiles y posiblemente más usadas en las aplicaciones son los hilos (Threads) los cuales ayudan a ejecutar líneas de código sin interrumpir otras líneas, lo cual hace que se usen para crear reproductores multimedia, actualizar constantemente tablas sin necesidad de que el usuario tenga que utilizarlas constantemente.

Para esto empezaremos con un ejemplo sin utilizar objetos lo cual ayudara a entender las diferentes formas de crearlos.

  1. Implementando (implements) de la interfaz Runnable
  2. Extendiendo (extends) de la interfaz Thread

Para el segundo caso está a la vez en su construcción de la clase Thread tiene implementado la primera opción Runnable.

 

En este caso explicare las diferencias al solo utilizar Runnable o Thread

 

Ejemplo con Runnable.

En esta ocasión se creará una clase a parte de la que te genera Netbeans con el nombre que se dese, en mi caso tendrá el nombre de Hilo por relación a la práctica.

public class Hilo{

}

A continuación implementaremos la clase Runnable en la clase que acabamos de crear donde quedara de la siguiente manera.

public class Hilo implements Runnable{

}


Siguiendo en la clase declararemos dos variables, el constructor y por ultimo sobrescribir la clase run perteneciente a Runnable, lo cual nos quedara de la siguiente manera.

public class Hilo implements Runnable {

long meta; //Variable del tipo long el cual se utilizara para designar el número de la meta.
String personaje; //Variable del tipo String la cual obtendrá del constructor el nombre del personaje que se usara.



public Hilo(String personaje) { //Constructor el cual obtendrá como parámetro e iniciara cada una de las variables tanto meta como personaje. 



this.meta = 50; //Se puede cambiar a cualquier otro número.
this.personaje = personaje; //Se iguala a la variable obtenida desde el mismo constructor.

}

@Override //Este método correrá lo que se necesita ejecutar donde se colocaran en las líneas de código entre las llaves.


public void run() {
}

}

Después de tener nuestra clase con la implementación de la interfaz Runnable, se añadirá un ciclo for el cual indicara los movimientos del personaje de manera ficticia.

Para esto colocaremos dentro del método run el siguiente código.

for (int i = 1; i <= this.meta; i++){ //Clico que llegara de límite hasta el mismo valor que le colocamos anterior mente a la variable meta.

            System.out.println(this.personaje + " en el metro " + i); //Imprime el nombre del personaje y en que meto está usando la variable local del for la cual es “i”.

            try{

                Thread.sleep(50); //Realiza una pausa de 50 milisegundos (3 segundos), esta debe estar en un try&catch él cual sirve para atrapar excepciones y no arruine el transcurso del programa..

            }catch(InterruptedException ex){

                return;

            }

}

En la clase que nos creó Netbeans por defecto la cual contiene el método estático main  ingresaremos lo siguiente.

Hilo user1 = new Hilo("Conejo"); //Instanciamos un objeto de la clase Hilo la cual creamos y estuvimos utilizando anteriormente nombrada user1 colocando un String dándole el nombre de conejo en el  constructor de la misma clase.

Hilo user2 = new Hilo("Tortuga");//Instanciamos otro objeto  ahora con el nombre user2.

new Thread(user1).start();

new Thread(user2).start();

 

Esta es la diferencia de usar un Runnable de un Thread el cual para correr el Runnable debemos usar un Thread  que nunca construimos colocando el Runnable que si construimos en los constructores para poder usar el método start para que ejecute todo lo que tiene ingresado el Runnable en el método run.

new Thread(user1).start();

new Thread(user2).start();


Esto dara en nuestra consola de Netbeans el siguiente resultado.

Ejemplo con Thread.

En esta ocasión solo existen pocos cambios, el primero será en la clase Hilo cual cambiara a la siguiente manera.

De:

public class Hilo implements Runnable{

}


A:

public class Hilo extends Thread{

}

 

Y en la clase creada cambiara lo siguiente.

De:

new Thread(user1).start();

new Thread(user2).start();

A:

        user1.start();

        user2.start();

 

Ya no se utiliza new Thread para esta ocasión ya que utilizamos Thread y este ya tiene en su clase el método start.


Nota: Este ejemplo también se puede utilizar con JButtons, JLabels u otro objeto que se necesite.

Dejo un ejemplo ya construido en POO y con lo anterior para mejor ayuda.

Descargar

Para dudas o aclaraciones se pueden comunicar conmigo Daniel de Jesús Marin Ruvalcaba al correo [email protected]


Publicado por danielmarinr @ 12:49  | Java SE8
Comentarios (1)  | Enviar
Comentarios
Publicado por neofito69
Jueves, 25 de junio de 2015 | 13:39

Daniel, muy emocionado por sus aportaciones, creame que es en nombre del compañerismo, el amor a la uni, y es aportar - quizás pequeños granitos - al área de las ciencias computacionales, el compartir lo que sabemos es de almas grandes.