Introducción a Programación Concurrente Estructuras de Datos
Hilos de Ejecución
Procesos Ejecución de un programa Características Estado (valor de los registros) Instrucciones Pila de ejecución Memoria de trabajo (heap)
Hilos y Procesos
Ventajas de programar con hilos Simplificación del modelo Manejo de eventos asíncronos Interfaces de usuario más interactivas Uso de varios procesadores
Varias pilas de ejecución
Iniciar un hilo en Java Thread t = new Thread() ; t. start () ; Este hilo no hace nada. El stack se pierde en el momento en el que se inicia. Hay que darle un trabajo.
¿Cómo iniciar un nuevo hilo de ejecución? Crear un objeto de tipo Runnable Este es el trabajo que va a realizar el hilo.
¿Cómo iniciar un nuevo hilo de ejecución? Crear un objeto de tipo Thread y asignarle un Runnable (trabajo) e iniciar el hilo.
Ciclo de vida de un hilo
Thread Scheduler Decide cuál hilo se ejecuta después. No puedo saber el orden de ejecución de los hilos!
Dormir un hilo Permite tener un poco más de control sobre el orden de ejecución. Cuando termina el tiempo, el hilo queda en estado ejecutable
Aplicaciones Cliente-Servidor Modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes.
¿Cómo funcionan? - Chat
Pasos
Sockets Un Socket es un objeto que representa una conexión entre dos máquinas. Una conexión implica que cada una de las máquinas conoce la ip de la otra máquina y el puerto a través del cual se van a comunicar. Los puertos 0 a 1023 están reservados.
Establecer la conexión inicial
Servidor El servidor debe estar atento a los clientes que se quieren conectar.
Servidor
Servidor
Multiusuario Cada usuario se maneja en un hilo aparte.
Comunicación con el cliente
Protocolo de comunicación Establece las reglas de comunicación entre el cliente y el servidor. ¿Quién habla primero? ¿Qué comandos puede recibir el servidor? ¿Qué acciones se realizan en cada comando?
Protocolo: Ejemplo Registrar usuario Opción A: 1. Envío mensaje al servidor 2. Envío todos los datos en un orden específico. Opción B: 1. Envío comando al servidor 2. El servidor pide de uno a uno los datos.
Preguntas ¿Cuáles son los pasos para iniciar un nuevo hilo de ejecución y el código en java? ¿Cómo puedo decirle a un hilo que espere un segundo? ¿Qué es un socket? ¿Cómo se crea? ¿Qué clase necesito para leer de un stream de un socket? ¿Para escribir en el stream del socket? Escriba el código en java para crearlas.
Taller Descargar los ejemplos del aula virtual, correrlos y entenderlos. El ejemplo de hilos tiene partes de código comentadas, correrlo con el código comentado y no comentado. Realizar el taller 9 del aula virtual El jueves hay quiz!