Proyecto de Programacion en Redes i (1)

8
PROYECTO DE PROGRAMACION EN REDES I INTEGRANTES: ANGULO CESAR DUQUE LUIS FILIAN CARLOS MOLINA OLIVER PAGUAY HÉCTOR CURSO: VIII SISTEMAS MATUTINO PROFESOR: ING. GEOVANNY VEGA TEMA: PROGRAMACION MULTI THREAD O MULTITAREA PERIODO: ABRIL/AGOSTO 2015 UNIVERSIDAD TÉCNICA DE FACULTAD DE ADMINISTRACIÓN, FINANZAS E

Transcript of Proyecto de Programacion en Redes i (1)

Page 1: Proyecto de Programacion en Redes i (1)

PROYECTO DE PROGRAMACION EN REDES I

INTEGRANTES:

ANGULO CESAR

DUQUE LUIS

FILIAN CARLOS

MOLINA OLIVER

PAGUAY HÉCTOR

CURSO:

VIII SISTEMAS MATUTINO

PROFESOR:

ING. GEOVANNY VEGA

TEMA:

PROGRAMACION MULTI THREAD O MULTITAREA

PERIODO:

ABRIL/AGOSTO

2015

UNIVERSIDAD TÉCNICA DE BABAHOYOFACULTAD DE ADMINISTRACIÓN, FINANZAS E INFORMÁTICA

Page 2: Proyecto de Programacion en Redes i (1)

OBJETIVOS GENERAL

Reconocer los estados en los cuales un hilo puede existir, e identificar las maneras en las que un hilo puede cambiar de un estado a otro.

OBJETIVOS ESPECIFICOS

Definir el concepto de thread (hilo), y construir diferentes threads en un programa Java controlando el código y los datos usados por cada uno.

Ejemplificar el control de ejecución de threads y escribir código independiente de la plataforma con threads.

Describir las dificultades que pueden surgir cuando varios threads comparten los mismos datos.

Usar wait y notify para establecer la comunicación entre hilos, y usar synchronized para proteger la integridad de los datos.

Page 3: Proyecto de Programacion en Redes i (1)

INTRODUCCION

En ocasiones encontrarás necesario que un programa realice varias tareas o actividades al mismo tiempo, de manera que todas ellas se realicen en menor tiempo, debido a que se ejecutan en paralelo. En los sistemas computacionales existen diversos mecanismos para lograr esto, y uno de ellos es a través del uso de procesos ligeros llamados threads o hilos. Dichos procesos ligeros se ejecutan dentro del contexto de un proceso principal que tiene el control de ejecución de los hilos y determina cuándo dejan de ejecutarse.

En Java, cuando se programan múltiples hilos, es responsabilidad del programador controlar su ejecución de ahí la importancia controlar su ejecución, de ahí la importancia de aprender acerca de cómo iniciarlos y terminarlos, así como conocer los diversos estados en los que se puede encontrar durante una ejecución.

Page 4: Proyecto de Programacion en Redes i (1)

MARCO REFERENCIAL

MARCO TEORICO

HILO (THREADS) EN JAVA

Es el flujo de ejecución secuencial independiente dentro de un proceso. Los hilos de un proceso comparten el espacio de direcciones, pero tienen su propio contador de programa y su propia pila de ejecución.

Ejemplo de hilos dentro de un proceso: un navegador en ejecución es un proceso y cada una de las ventanas de navegación abiertas son hilos independientes dentro del proceso.

La clase Thread permite representar a los hilos de ejecución.

CREACIÓN DE HILOS CON LA CLASE THREAD:

Paso 1: Crear una clase que extienda la clase Thread.Paso 2: Implementar el método run(). Este método es el cuerpo del hilo. El hilo muere al finalizar run().

public class MiHilo extends Thread{String Mensaje;public MiHilo(String nombre, String m){

super(nombre);Mensaje = m;

}public void run(){

for(int i = 0; i < 10; i++){System.out.println(getName() + “:” + Mensaje);

try {leep((long)(Math.random() * 1000));

}catch (InterruptedException e) {System.out.println(e.toString());

}}

}}

Page 5: Proyecto de Programacion en Redes i (1)

ARRANQUE DE UN HILO

Paso 1: Crear una clase que lance los hilos.Paso 2: Invocar al operador new para crear los hilos.Paso 3: Invocar al método start() de cada hilo. Este método arranca el hilo e invoca al método run().

public class VariosHilos{public static void main(String args[]){

MiHilo hilo1, hilo2;hilo1 = new MiHilo(“Hilo1”, “Hola”);hilo2 = new MiHilo(“Hilo2”, “Adios”);hilo1.start();hilo2.start();

}}

FINALIZACIÓN DE UN HILO

Método 1: llamada al método stop(). Finaliza el hilo de forma brusca, sobre todo si se ejecuta sobre el hilo en curso. No es un método muy “elegante” y está en desuso.

Método 2: método run() finaliza su ejecución. Se puede utilizar alguna variable que le indique al método run que debe finalizar. De esta forma se finaliza el hilo de manera ordenada. Es un método más “elegante”.

CLASE THREAD

Thread currentThread(): retorna el hilo en ejecución.void yield(): el siguiente hilo ejecutable disponible pasa a ser el hilo en ejecución.void sleep(long millis): duerme al hilo milis milisegundos.void start(): comienza la ejecución del hilo.void run(): cuerpo del hilo.void setName(String name): establece un nombre para el hilo.String getName(): retorna el nombre del hilo.void setPriority(): establece una prioridad para el hilo (valor entre 1 y 10) (MIN_PRIORITY=1 NORM_PRIORITY=5 MAX_PRIORITY=10).int getPriority(): retorna la prioridad del hilo.

Page 6: Proyecto de Programacion en Redes i (1)

Boolean isAlive(): retorna true si el hilo ha sido arrancado con start() y no ha terminado su ejecución (puede estar dormido).

CICLO DE VIDA DE UN HILO

SINCRONIZACIÓN DE HILOS

Los hilos pueden utilizar objetos comunes y manipularlos de forma independiente.

El acceso a las regiones críticas se controla con los métodos synchronized. Un método synchronized de un objeto sólo puede ser ejecutado por un único hilo en cada momento. También se pueden sincronizar variables.

El envío y recepción de señales entre los hilos se realiza con los métodos wait(), notify() y notifyAll().

void wait(): duerme al hilo hasta la llegada de un notify().void notify(): despierta a uno de los hilos que estaban esperando por el objeto.void notifyAll(): despierta a todos los hilos que estaban esperando por el objeto.