Está en la página 1de 3

INSTITUTO TECNOLGICO SUPERIOR DE APATZINGN MATERIA: TOPICOS SELECTOS DE PROGRAMACION PROFESOR: ING. CARLOS SANCHEZ UNIDAD Y TEMA: 3 .

2 NOMBRE DEL TRABAJO: COMPARACION: FLUJO UNICO Y FLUJO MULTIPLE ALUMNO Y MATRICULA: VICTOR R. SILVA ESQUIVEL - 08020238 CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES SEMESTRE Y TURNO: 5TO VESPERTINO OCTUBRE DEL 2010 Comparacin: Flujo nico Y Flujo Mltiple Programas de flujo nico Un programa de flujo nico o mono-hilvanado (single-thread) utiliza un nico flujo d e control (thread) para controlar su ejecucin. Muchos programas no necesitan la p otencia o utilidad de mltiples flujos de control. Sin necesidad de especificar ex plcitamente que se quiere un nico flujo de control, muchos de los applets y aplica ciones son de flujo nico. Por ejemplo, en la archiconocida aplicacin estndar de saludo: public class Hola Mundo? { static public void main( String args[] ) { System.out.println( Hola Mundo! ); } } Aqu, cuando se llama a main(), la aplicacin imprime el mensaje y termina. Esto ocu rre dentro de un nico hilo de ejecucin (thread). Debido a que la mayor parte de los entornos operativos no solan ofrecer un soport e razonable para mltiples hilos de control, los lenguajes de programacin tradicion ales, tales como C++, no incorporaron mecanismos para describir de manera elegan te situaciones de este tipo. La sincronizacin entre las mltiples partes de un prog rama se llevaba a cabo mediante un bucle de suceso nico. Estos entornos son de ti po sncrono, gestionados por sucesos. Entornos tales como el de Macintosh de Apple , Windows de Microsoft y X11/Motif fueron diseados en torno al modelo de bucle de suceso. Programas de flujo mltiple En la aplicacin de saludo, no se ve el hilo de ejecucin que corre el programa. Sin embargo, Java posibilita la creacin y control de hilos de ejecucin explcitamente. La utilizacin de hilos (threads) en Java, permite una enorme flexibilidad a los p rogramadores a la hora de plantearse el desarrollo de aplicaciones. La simplicid ad para crear, configurar y ejecutar hilos de ejecucin, permite que se puedan imp

lementar muy poderosas y portables aplicaciones/applets que no se puede con otro s lenguajes de tercera generacin. En un lenguaje orientado a Internet como es Jav a, esta herramienta es vital. Si se ha utilizado un navegador con soporte Java, ya se habr visto el uso de mltip les hilos en Java. Habr observado que dos applets se pueden ejecutar al mismo tie mpo, o que puede desplazar la pgina del navegador mientras el applet contina ejecu tndose. Esto no significa que el applet utilice mltiples hilos, sino que el navega dor es multihilo, multihilvanado o multithreaded. Los navegadores utilizan diferentes hilos ejecutndose en paralelo para realizar v arias tareas, aparentemente concurrentemente. Por ejemplo, en muchas pginas web, se puede desplazar la pgina e ir leyendo el texto antes de que todas las imgenes estn presentes en la pantalla. En este caso, el navegador est trayndose las imgenes en un hilo de ejecucin y soportando el desplazamiento de la pgina en otro hilo difere nte. Las aplicaciones (y applets) multihilo utilizan muchos contextos de ejecucin para cumplir su trabajo. Hacen uso del hecho de que muchas tareas contienen subtarea s distintas e independientes. Se puede utilizar un hilo de ejecucin para cada sub tarea. Mientras que los programas de flujo nico pueden realizar su tarea ejecutando las subtareas secuencialmente, un programa multihilo permite que cada thread comienc e y termine tan pronto como sea posible. Este comportamiento presenta una mejor respuesta a la entrada en tiempo real. Vamos a modificar el programa de saludo creando tres hilos de ejecucin individual es, que imprimen cada uno de ellos su propio mensaje de saludo, Multi Hola.java: // Definimos unos sencillos hilos. Se detendrn un rato antes de imprimir sus nomb res y retardos class Test Th? extends Thread { private String nombre; private int retardo; // Constructor para almacenar nuestro nombre y el retardo public Test Th( String s,int d ) { nombre = s; retardo = d; } // El mtodo run() es similar al main(), pero para threads. Cuando run() termin a el thread muere public void run() { // Retasamos la ejecucin el tiempo especificado try { sleep( retardo ); } catch( Interrupted Exception e ) { ; } // Ahora imprimimos el nombre System.out.println( Hola Mundo! +nombre+ +retardo ); } } public class Multi Hola { public static void main( String args[] ) { Test Th t1,t2,t3; // Creamos los threads t1 = new Test Th( Thread 1,(int)(Math.random()*2000) ); t2 = new Test Th( Thread 2,(int)(Math.random()*2000) ); t3 = new Test Th( Thread 3,(int)(Math.random()*2000) );

// Arrancamos los threads t1.start(); t2.start(); t3.start(); } }

También podría gustarte