Fecha actual 22 Jun 2018 13:38

[Java] Thread Mejorado

Moderador: dresha

Reglas del Foro
En Ogarena no están bien vistos el Warez ni la Piratería; para eso hay otros foros que seguro os acogen con los brazos abiertos.
apokalypse
Helper Programación
Helper Programación
Mensajes: 207
Registrado: 25 Jun 2008 03:31

[Java] Thread Mejorado

Mensaje por apokalypse » 08 May 2012 13:14

La mayoría de las veces que abrimos un Thread en Java es para realizar rutinas de forma continua hasta que le ordenemos que se pare. (while(..){ rutina del thread })

He creado una clase HiloMejorado que facilita enormemente trabajar con este tipo de hilos.

Para usarlo, basta que nuestro hilo herede de HiloMejorado (public NuestraClase extends HiloMejorado) y solo hay que redefinir algunos métodos (si es que lo necesitamos):

- private void rutinaDeComienzo() : esta rutina se ejecuta justo antes de entrar al bucle maestro del hilo. Viene bien para hacer las incializaciones de variables temporales del programa
- private void rutinaDelBucle() : esta rutina se ejecuta de forma continua hasta que le ordenemos al hilo que se detenga.
- private void rutinaDeSalida() : esta rutina se ejecuta justo después de haber salido del bucle maestro.
- private void rutinaPreviaAParar(): cuando ordenemos al hilo que se detenga, ejecutará esta rutina antes de detener el hilo.

Para usar la clase que hereda de HiloMejorado, creamos el Thread y lo arrancamos con hilo.start(); . Para detener el hilo mejorado, hay que llamar al método hilo.paraElHilo();.

Os dejo aquí el código:

Código: Seleccionar todo

package client;

/*
 * @author Apokalypse Studios
 * 
 * HiloMejorado APK 1.0
 * 
 * Esta clase permite trabajar con hilos de una forma más organizada y cómoda.
 * 
 * Forma de uso:
 * 1.-Programar las rutinas de entrada, bucle, salida y previa a parar
 * 2.-Crear el objeto HiloMejorado
 * 3.-Llamar al método .start() para iniciar el hilo
 * 4.-Llamar al método .paraElHilo() para detener el hilo
 * 
 */
 
public class HiloMejorado extends Thread
{
    private boolean continuar=true; // Variable que mantiene el hilo indefinidamente

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Esta rutina se ejecuta justo antes de entrar al bucle por primera vez
     */
    private void rutinaDeComienzo()
    {
    
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Esta rutina va a ser la rutina que se repetirá indefinidamente mientras el hilo esté
     * en ejecución.
     */
    private void rutinaDelBucle()
    {
    
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Esta rutina se ejecuta justo en cuanto se solicita al hilo que se pare.
     */
    private void rutinaPreviaAParar()
    {
    
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Esta rutina se ejecuta una vez ha salido del bucle principal.
     */
    private void rutinaDeSalida()
    {
    
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Código fijo
     */
    public void run()
    {
        rutinaDeComienzo();
        while(continuar)
        {
            rutinaDelBucle();
        }
        rutinaDeSalida();
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Constructor
     */
    public HiloMejorado() 
    {
    
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*
     * Esta rutina detiene el hilo.
     */
    public void paraElHilo()
    {
        rutinaPreviaAParar();
        continuar=false;
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
}

Responder