Clase 3
Clase 3
Clase 3
programación I
1
Caso
Ciberfarma necesita darle seguridad a su sistema de acceso,
de manera que después de 10s se cierre la ventana.
Si es que pulsa el botón aceptar abrirá la ventana Principal
2
Contenido
• Threads HILOS: PROCESOS SIMULTANEOS
• Conceptos básicos
• Ciclo de vida
• Proceso de creación
Ejercicios
Logros de la Unidad
• Crear aplicaciones que utilicen eficientemente hilos de ejecución mediante la
clase Thread y la interface Runnable utilizando Eclipse como herramienta de
desarrollo.
3
Introducción a los hilos
• Al usar computadoras, la
multitarea, nos permite realizar
varios procesos a la vez, sin
embargo, debemos considerar,
que estos comparten los
mismos recursos del
computador.
NINGUNO DE ELLOS TIENE QUE ESPERAR A OTROS PARA FUNCIONAR
Lenguaje de Programación I 4 4
Introducción a los hilos
La creación de hilos es una característica que permite a las
aplicaciones realizar varios procesos "aparentemente" a la vez,
facilitando la realización de procesos en segundo plano.
https://jarroba.com/wp-content/uploads/2014/05/Threads_Un_unico_hilo.png
https://jarroba.com/wp-content/uploads/2014/05/Threads_Varios_hilos.png
6
Introducción a los hilos
Para gestionar procesos multitarea, mediante hilos, podemos:
Heredando la clase Thread o implementando la interfaz Runnable.
Paso 1. Crear una clase que gestiona el hilo, sobreescribiendo el método run()
clase Thread
public class MiHilo extends Thread { public class MiHilo implements Runnable {
public void run() { pone a ejecutar mi hilo public void run() {
// código del hilo // código del hilo
} }
} }
7
Aplicación
Del caso:
8
Aplicación
Creando el paquete y la clase de gestión del hilo:
Se llamará como:
10
Aplicación 2
Ciberfarma, necesita colocar un reloj, en su ventana principal, para lo
cual se debe actualizar cada segundo y mostrarlo en la etiqueta
respectiva
11
Sincronización
12
Caso
Abre el archivo Editor, completa la siguiente actividad y
observa el resultado
13
Métodos Sincronizados
• Todos los objetos de Java tienen asociado su propio monitor
implícito.
• Para entrar en el monitor de un objeto sólo hay que llamar a
un método como synchronized.
class Ejemplo {
synchronized void algo(String msg) { ...
14
Sentencia Synchronized
• Este mecanismo requiere colaboración entre los hilos. El que
hace el código debe acordarse de poner synchronized siempre
que vaya a usar fichero. Si no lo hace, el mecanismo no sirve
de nada.
• A veces la solución de sincronizar todo un método no es
posible o lo más adecuado.
synchronized (objeto) {
// sentencias que se sincronizan
} ...
15
Aplicación
Modifica el código para sincronizar los mensajes
16
Propuesto 2
Otro ejemplo del uso de hilos, es realizar un chat.
Diseñe lo siguiente:
17
Propuesto 2
Para el cliente. Ej:
18
Propuesto 2
Para el servidor. Llamamos a un hilo que constantemente
revise mensajes enviados. Ej:
Agregar:
servidor.close();
19
Sincronización de hilos
Cada hilo contiene todos los datos y métodos necesarios para
ejecutarse en su propio espacio.
Sin embargo, existen muchas situaciones donde ejecutar
threads concurrentes que compartan datos y deben
considerar el estado y actividad de otros threads.
Este conjunto de situaciones de programación son conocidos
como escenarios 'productor/consumidor'; donde el productor
genera un canal de datos que es consumido por el
consumidor.
Ej:
En este ejemplo el Productor y el Consumidor comparten
datos a través de un objeto CubbyHole común.
20
El Productor genera un entero entre 0 y 9 (inclusive), lo
almacena en un objeto "CubbyHole", e imprime el número
El Consumidor, consume todos los enteros de CubbyHole tan
rápidamente como estén disponibles.
21
22
Referencia
https://jarroba.com/multitarea-e-hilos-en-java-con-ejemplos-
thread-runnable/
http://labojava.blogspot.pe/2012/10/sincronizacion.html
http://www.binarykode.com/bdescargas/Manuales%20y%20Do
cumentos/JAVA/Interfaces%20de%20Usuario/Tutorial%20JAVA%
20avanzado%20(I)/threads/synchronization.html
23
SEDE MIRAFLORES SEDE INDEPENDENCIA SEDE BREÑA SEDE TRUJILLO
Calle Diez Canseco Cdra 2 / Pasaje Tello Av. Carlos Izaguirre 233 Av. Brasil 714 – 792 Calle Borgoño 361
Miraflores – Lima Independencia – Lima (CC La Rambla – Piso 3) Trujillo
Teléfono: 633-5555 Teléfono: 633-5555 Breña – Lima Teléfono: (044) 60-2000
Teléfono: 633-5555
SEDE SAN JUAN DE LURIGANCHO SEDE SAN MIGUEL SEDE BELLAVISTA SEDE AREQUIPA
Av. Próceres de la Independencia 3023-3043 Av. Federico Gallese 847 Av. Mariscal Oscar R. Benvides 3866 – 4070 Av. Porongoche 500
San Juan de Lurigancho – Lima San Miguel – Lima (CC Mall Aventura Plaza) (CC Mall Aventura Plaza)
Teléfono: 633-5555 Teléfono: 632-4900 Bellavista – Callao Paucarpata - Arequipa
Teléfono: 633-5555 Teléfono: (054) 60-3535
www.cibertec.edu.pe