Sei sulla pagina 1di 10

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA

PRACTICA 1: HILOS

CLAVE DE LA ASIGNATURA PARA-ES

CUATRIMESTRE 8

NOMBRE DE LA ASIGNATURA PROGRAMACIN AVANZADA

NMERO DE PRCTICA 1

NOMBRE HILOS

DURACIN (HORAS) 2

INTRODUCCIN:

Un proceso es un programa en ejecucin que es localizado en la memoria por el sistema operativo. Un hilo es una ejecucin o flujo de control en el espacio de direcciones de un proceso. Un proceso puede tener ms de un hilo. Todos los hilos en un proceso tienen su propio contador de programa y su propia pila para variables locales y direcciones de retorno de invocacin de procedimientos. Un CPU pueden estar ejecutando distintos procesos pesados y uno de ellos puede estar compuesto por distintos flujos de ejecucin (threads o hebras o hilos). Estas threads tendrn que disputarse el tiempo de ejecucin que el S.O. le d al proceso en el que residen.

OBJETIVO: Comprender el concepto de multihilos, su gestin y manejo.

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 1

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

TEORA: Un thread (hilo, flujo de control del programa) representa un proceso individual ejecutndose en un sistema. A veces se les llama procesos ligeros o contextos de ejecucin. Cada hilo controla un nico aspecto dentro de un programa, como puede ser supervisar la entrada en un determinado perifrico o controlar toda la entrada/salida del disco.Todos los hilos comparten los mismos recursos, al contrario que los procesos, en donde cada uno tiene su propia copia de cdigo y datos (separados unos de otros).

La clase Thread Es la clase que encapsula todo el control necesario sobre los hilos de ejecucin (threads), la clase Thread es la nica forma de controlar el comportamiento de los hilos, esto se logra con los mtodos que proporciona.

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 2

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 3

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

Durante el ciclo de vida de un thread, ste se puede encontrar en diferentes estados.

Nuevo Thread ThreadMiThread = new MiClaseThread(); Cuando un thread est en este estado, es simplemente un objeto Thread vaco. Desde este estado solamente puede arrancarse llamando al mtodo start(), o detenerse definitivamente, llamando al mtodo stop().

Parado El thread entra en estado "Parado" cuando alguien llama al mtodo suspend(), cuando se llama al mtodo sleep(), cuando el thread est bloqueado en un proceso de entrada/salida o cuando el thread utiliza su mtodo wait() para esperar a que se cumpla una determinada condicin. Los mtodos de recuperacin del estado Ejecutable son los siguientes: Si un thread est dormido, pasado el lapso de tiempo. Si un thread est suspendido, luego de una llamada al mtodo resume(). Si un thread est bloqueado en una entrada/salida, una vez que el comando E/S concluya su ejecucin.

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 4

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

Muerto Un thread se puede morir de dos formas: por causas naturales o porque lo maten (con stop()).El mtodo stop() enva un objeto ThreadDeath al thread que quiere detener.

Prioridad de un hilo Indica lo importante que es cada hilo. Si hay varios hilos bloqueados o en espera de ejecutarse, el planificador ejecutar el de mayor prioridad en primer lugar. El rango de prioridades oscila entre 1 y 10. THREAD.NORM_PRIORITY ( 5 ). THREAD. MIN_PRIORITY ( 1 ). THREAD. MAX_PRIORITY ( 10 ). Se puede leer la prioridad de un hilo con getPriority() o/y cambiarla con setPriority(). Tcnicas de implementacin de hilos en java. Porherencia public class X extends Thread {... public x() {... } public void run() {....} .... } public class Principal //--aplicacin { static X x1; static X x2; public static void main(String arg[]) throws InterruptedException { x1 = new X(); x2 = new X(); x1.start(); x2.start(); ... }
ELABORO: M. en D. Bibiana Prez Castillo Prez REVISO: Pgina | 5

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

} Por implementacin de interfase import java.io.* class X implements Runnable { public X() {...} public void run() { ..... } ..... } class Principal //--aplicacin { public static void main(String arg[]) throws InterruptedException { Thread x1 = new Thread(new x()); Thread x2 = new Thread(new x()); x1.start(); x2.start(); } }

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 6

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

DESARROLLO:

1. Veamos un ejemplo en el que una clase crea dos hilos y los lanza a ejecucin. Ambos hilos imprimen una palabra pero con distintos intervalos de tiempo. La palabra a imprimir y el intervalo de tiempo son parmetros del constructor de la clase.
//POR HERENCIA classHiloHerencia extends Thread { String palabra; //-- palabra a imprimir long pausa; publicHiloHerencia (StringqueDecir, longtiempoPausa) { palabra = queDecir; pausa = tiempoPausa; } publicvoidrun( ) { try { for (inti=0;i<100;i++) { System.out.println (palabra+ " "); Thread.sleep(pausa); } } catch(InterruptedException e) {} } } // APLICACIN DE HILOS POR HERENCIA publicclassAppHiloHerencia { public static void main(java.lang.String[] args) { HiloHerencia hilo1; HiloHerencia hilo2; hilo1=new HiloHerencia("Gato",50); hilo2=new HiloHerencia("Perro",25); hilo1.start(); hilo2.start(); } }
ELABORO: M. en D. Bibiana Prez Castillo Prez REVISO: Pgina | 7

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

// IMPLEMENTANDO LA INTERFAZ Runnable public class HiloRunnable implements Runnable { String palabra; //--palabra a imprimir longpausa; publicHiloRunnable (String queDecir,longtiempoPausa) { palabra = queDecir; pausa = tiempoPausa; } publicvoidrun( ) { try { for (inti=0;i<100;i++) { System.out.println (palabra+ " "); Thread.sleep(pausa); } } catch(InterruptedException e) {} } }

//APLICACION DE HILOS DE INTERFAZ RUNNABLE public class AppHiloRunnable { public static void main (String args[])throws InterruptedException { //--crearhilos HiloRunnablegato = new HiloRunnable ("Gato", 50) HiloRunnableperro= new HiloRunnable ("Perro", 25); Thread hilo1 = new Thread (gato); Thread hilo2 = new Thread (perro); //--ejecutar los hilos hilo1.start(); hilo2.start(); } }

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 8

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

ACTIVIDADES COMPLEMENTARIAS: 1. Demuestre la utilizacin de los mtodos join(), setPriority(), getPriority, setName(), getName(), stop(), isAlive(), modifique el programa ejemplo para ello. 2. En una fbrica de bolgrafos hay 4 operarios y 1 montador. El primer operario (OP1) construye el cartucho o repuesto de tinta (OP2) construye la bala, porta bala y soporte, el tercero (OP3) construye barril y el ultimo (OP4) el botn y tapa de polipropileno (ver figura siguiente) El montador se encarga de coger 1pieza de cada uno y arma el bolgrafo. La actuacin concurrente de estas cuatro personas est sujeta a las siguientes restricciones:

El montador no podr tomar ningn material, si dicho material no ha sido fabricado de antemano por el operario correspondiente. El operario que fabrica la bala, pota bala y soporte, no tiene espacio ms que para almacenar 20 de estos objetos; deber esperar si en cualquier momento ha fabricado 4 barriles, sin que ninguno haya sido tomado por el montador. El nmero mximo de objetos que pueden almacenar los operarios que fabrican l cartucho, barril y ,botn y tapa es de 10.

Construya una aplicacin en java que gestione estas acciones.


ELABORO: M. en D. Bibiana Prez Castillo Prez REVISO: Pgina | 9

UNIVERSIDAD POLITCNICA DEL VALLE DE MXICO INGENIERA EN INFORMTICA


PRACTICA 1: HILOS

CONCLUSIONES:

BIBLIOGRAFA:

1. Arnold, K., Goslin, J., & Holmes, D. (2001). El Lenguaje de Programacin Java. Adison Wesley. 2. Ceballos, F. J. (2002). Programacin Java 2. Mxico: Alfaomega. 3. Doug, L. (2001). Programacin Concurrente en Java. Addison Wesley. 4. Luis Joyanes Aguilar, I. Z. (2010). PROGRAMACION EN C/C++JAVA Y UML. Mxico: Mc Graw Hill.

ELABORO: M. en D. Bibiana Prez Castillo Prez

REVISO: Pgina | 10

Potrebbero piacerti anche