Teoria de hilos

Solo disponible en BuenasTareas
  • Páginas : 25 (6010 palabras )
  • Descarga(s) : 4
  • Publicado : 4 de agosto de 2010
Leer documento completo
Vista previa del texto
Tutorial Hilos en Java
1. Flujo en Programas o Programas de Flujo Unico o Programas de Flujo Múltiple 2. Creación y Control de Threads o Creación de un Thread o Arranque de un Thread o Manipulación de un Thread o Suspensión de un Thread o Parada de un Thread 3. Arrancar y Parar Threads 4. Suspender y Reanudar Threads 5. Estados de un Thread o Nuevo Thread o Ejecutable o Parado o Muerto o Elmétodo isAlive() 6. Scheduling 7. Prioridades, demonios... o Prioridades o Threads Demonio o Diferencia de Threads con fork() 8. Ejemplo de Animación 9. Comunicación entre Threads o Productor o Consumidor o Monitor o Monitorización del Productor Considerando el entorno multithread, cada thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. A veces seles llama procesos ligeros o contextos de ejecución. Típicamente, cada thread controla un único aspecto dentro de un programa, como puede ser supervisar la entrada en un determinado periférico o controlar toda la entrada/salida del disco. Todos los threads comparten los mismos recursos, al contrario que los procesos en donde cada uno tiene su propia copia de código y datos (separados unos deotros). Gráficamente, los threads se parecen en su funcionamiento a lo que muestra la figura siguiente:

FLUJO EN PROGRAMAS
Programas de flujo único
Un programa de flujo único o mono-hilvanado (single-thread) utiliza un único flujo de control (thread) para controlar su ejecución. Muchos programas no necesitan la potencia o utilidad de múltiples flujos de control. Sin necesidad de especificarexplícitamente que se quiere un único flujo de control, muchos de los applets y aplicaciones son de flujo único. Por ejemplo, en nuestra aplicación estándar de saludo:
public class HolaMundo { static public void main( String args[] ) { System.out.println( "Hola Mundo!" ); } }

Aquí, cuando se llama a main(), la aplicación imprime el mensaje y termina. Esto ocurre dentro de un único thread.Programas de flujo múltiple
En nuestra aplicación de saludo, no vemos el thread que ejecuta nuestro programa. Sin embargo, Java posibilita la creación y control de threads explícitamente. La utilización de threads en Java, permite una enorme flexibilidad a los programadores a la hora de plantearse el desarrollo de aplicaciones. La simplicidad para crear, configurar y ejecutar threads, permite que sepuedan implementar muy poderosas y portables aplicaciones/applets que no se puede con otros lenguajes de tercera generación. En un lenguaje orientado a Internet como es Java, esta herramienta es vital.

Si se ha utilizado un navegador con soporte Java, ya se habrá visto el uso de múltiples threads en Java. Habrá observado que dos applet se pueden ejecutar al mismo tiempo, o que puede desplazar lapágina del navegador mientras el applet continúa ejecutándose. Esto no significa que el applet utilice múltiples threads, sino que el navegador es multithreaded. Las aplicaciones (y applets) multithreaded utilizan muchos contextos de ejecución para cumplir su trabajo. Hacen uso del hecho de que muchas tareas contienen subtareas distintas e independientes. Se puede utilizar un thread para cadasubtarea. Mientras que los programas de flujo único pueden realizar su tarea ejecutando las subtareas secuencialmente, un programa multithreaded permite que cada thread comience y termine tan pronto como sea posible. Este comportamiento presenta una mejor respuesta a la entrada en tiempo real. Vamos a modificar nuestro programa de saludo creando tres threads individuales, que imprimen cada uno deellos su propio mensaje de saludo, MultiHola.java:
// Definimos unos sencillos threads. Se detendrán un rato // antes de imprimir sus nombres y retardos class TestTh extends Thread { private String nombre; private int retardo; // Constructor para almacenar nuestro nombre // y el retardo public TestTh( String s,int d ) { nombre = s; retardo = d; } // El metodo run() es similar al main(), pero para...
tracking img