Está en la página 1de 14

Hilos

Qu es un Hilo?
Ciclo de vida de un hilo
Sincronizacin de mltiples
hilos
Interfaz Runnable
Grupos de hilos

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Objetivos
Al finalizar la leccin el estudiante ser capaz de:
Conocer que es un Hilo o Thread
Conocer el ciclo de vida de un hilo
Crear aplicaciones con mltiples hilos de ejecucin
Comprender como sincronizar mtodos mediante el uso
de cdigo synchronized
Conocer el uso de la interfaz Runnable
Conocer el manejo bsico de grupos de hilos

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Hilos o Threads
Es una porcin de cdigo que puede
ejecutarse de manera concurrente con
otros hilos de ejecucin.
Thread(String nombre)
Thread(Runnable claseEjecutable)
Thread() // Thread-#
Thread(ThreadGroup grupo,hilo)
ThreadGroup(ThreadGroup Padre, ThreadGroup Hijo)
Thread(ThreadGroup grupo ,Runnable objeto)
Thread(ThreadGroup grupo, Runnable objeto, String nombre)

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Ciclo de vida de un hilo

BLOQUEADO

LISTO CORRIENDO FINALIZADO


start()
NACIDO
sleep() wait()

DURMIENDO
notify()
notifyAll()

ESPERANDO

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Prioridades
Asignacin de procesador tipo (Round Robin) cola circular
con quantum de tiempo entre hilos listos en los sistemas
que lo permiten (Windows). En Solaris un hilo corre hasta
terminar o hasta ser desplazado por otro de mayor
prioridad.
Existen diez niveles de prioridad.
Recolector de basura se ejecuta con prioridad muy baja.
Puede darse Starvation o espera ilimitada.
Prioridades de un Thread son normalmente:
MIN_PRIORITY(1), MAX_PRIORITY(10) y NORM_PRIORITY (5)

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Prioridades

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
El mtodo run()
Cuando un hilo entra al estado de ejecucin se
ejecuta su mtodo run.
public void run(){
// aqu se puede ejecutar wait() sleep() yield() notify() notifyAll()

Todo objeto que herede de Thread o implemente la


interfaz Runnable tiene un mtodo run()

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Mtodos Synchronized
Cualquier objeto con mtodos tipo synchronized
es conocido como monitor. Solo un hilo puede
estar ejecutando cdigo dentro de un mtodo
syncronized del mismo monitor.

public synchronized void metodo(){


// hay dos formas de entrar a un mtodo de este tipo
// esperando en cola de entrada o bien en cola
// de mtodos listos para ejecucin
}

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
setDaemon()
Cuando el mtodo setDaemon(true) es aplicado a
un hilo dentro de un programa, dicho hilo se
convierte en un hilo de servicio que se ejecuta
de fondo.

Si un programa solo tiene pendientes hilos de


este tipo el programa, entonces no espeara a
ninguno antes de terminar y salir.

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Interfaz Runnable
Si se tiene una aplicacin que hereda de
JFrame u otra clase pero se desea ejecutar en
un hilo propio, se puede utilizar la interfaz
Runnable. Simplemente se debe agregar a la
clase lo siguiente:
implements Runnable; // e implementar el mtodo
public void run(){
}
Para crear el hilo se utiliza:
Thread(Runnable instancia, String nombre);

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Grupos de Hilos
Un grupo de hilos o ThreadGroup es un objeto
que permite agrupar varios hilos para que estos
sean tratados como grupo. Por ejemplo: Se les
puede enviar una sear de interrupcin a todos
los hilos a la vez o enviarlos todos a espera con
una sola instruccin.
Se puede agrupar adems grupos de hilos.
Creando lo que se denomina grupo padre. Lo
que se haga con un grupo padre se propaga a
sus grupos hijos.

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Ejemplo
Hilos

Objetivo

Mostrar un ejemplo de aplicacin con mltiples hilos

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Laboratorio
Hilos

Objetivo

Modificar una aplicacin para que permita su ejecucin en


mltiples hilos.

Tiempo Requerido: 30 min.

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados
Laboratorio
Sincronizacin de hilos

Objetivo

Modificar una aplicacin con mltiples hilos no sincronizados


para que se comporten de manera sincronizada.

Tiempo Requerido: 30 minutos

Elaborado por: MSc. Edgar Casasola


Murillo - Derechos Reservados

También podría gustarte