Tema07-Hilos

11
Programación Visual II Lic. Luis Ernesto Díaz Beteta Tema 07 – Hilos en Java

description

programacion

Transcript of Tema07-Hilos

Page 1: Tema07-Hilos

Programación Visual II

Lic. Luis Ernesto Díaz Beteta

Tema 07 – Hilos en Java

Page 2: Tema07-Hilos

Introducción

Un Hilo es un trozo de código de nuestro programa que puede ser ejecutado al mismo tiempo que otro

Desde el punto de vista del usuario existen dos áreas bien diferenciadas, que el desarrollador ha de tener en cuenta: primer plano y segundo plano

Primer plano aquí se ejecuta únicamente un hilo llamado “hilo principal”, es el hilo que trabaja con la vista o interfaz gráfica. También, puede ser usado para hacer cálculos u otros procesamientos complejos, aunque estos deberían de evitarse hacerse en este hilo a toda costa.

Segundo plano se ejecuta todo el resto de hilos. El segundo plano tiene la característica de darse en el mismo momento que el primer plano, debería de llevar las ejecuciones pesadas de la aplicación.

La multitarea nos permite ejecutar varios procesos a la vez, es decir, de forma concurrente.Por tanto eso nos permite hacer programas que se ejecuten en menor tiempo y sean más eficientes.

Page 3: Tema07-Hilos

Multitarea

VS

Page 4: Tema07-Hilos

Clase Thread

En Java para utilizar la multitarea debemos de usar la clase Thread, es decir, se debe heredar de la clase Thread y la clase Thread implementa la interface Runnable.

En el diagrama de clase muestra la Interface Runnable y la clase Thread con sus principales métodos:.

Page 5: Tema07-Hilos

Ejemplo clase Thread

Page 6: Tema07-Hilos

Ejemplo interface Runnable

Page 7: Tema07-Hilos

Arrancar y detener un hiloArranque de un thread

Detener un thread

hilo1.stop();

Suspender y reanudar un thread

Modificador synchronized

Funciones wait() y notify()

Cuando run() termina, el hilo termina

Page 8: Tema07-Hilos

Arrancar y detener un hilo

Cuando run() termina, el hilo termina

Page 9: Tema07-Hilos

Ciclo de vida de un hilo

Cuando se crea un nuevo Thread, está en su estado inicial 'Nuevo Thread'. En este estado es simplemente un objeto más.No existe todavía el thread en ejecución. El único método que puede invocarse sobre él es el método start().Cuando se invoca a start() sobre el hilo. El sistema crea los recursos necesarios, loplanifica (le asigna prioridad) y llama al método run(). En este momento el hilo está en ejecución.Si el método run() invoca internamente el método sleep() o wait() o el hilo tiene queesperar por una operación de E/S, entonces el hilo pasa al estado 'Parado' hasta que la condición de espera finalice.Por último cuando el método run finaliza el hilo termina y pasa a la situación 'Muerto'.

Page 10: Tema07-Hilos

Demonios

Demonio: es un tipo especial de hilo que no forma parte del programa, sino de la máquina virtual de Java● Se usan para prestar servicios en segundo plano● Ejemplo: el recolector de basura

Creación de un demonio:hilo.setDaemon(true);

Verificar si un hilo es un demonio:boolean b = hilo.isDaemon();

Page 11: Tema07-Hilos

MUCHAS GRACIAS