viernes, 19 de octubre de 2012

Introducción a Threads


Que es un Thread (Hilo de Ejecución).
Un concepto fundamental en programación es la idea de manejar más de una tarea a la vez. Muchos problemas de programación requieren que el programa pueda detener lo que este haciendo, tratar con algún otro problema y regresar al proceso principal.

Dentro de un programa, las partes que corren separadamente se llaman hilos (Thread) y el concepto general se llama Multithreading.

Ordinariamente, los hilos son una manera de asignar el tiempo de un solo procesador. Pero si el sistema operativo apoya procesadores múltiples, cada hilo puede asignarse a
un procesador diferente y ellos pueden correr realmente en paralelo. Una de las características convenientes de Multithreading es que el programador no necesita preocupar sobre si existe uno o más procesadores. El programa es lógicamente dividido en hilos y si la maquina tiene mas de un procesador entonces el programa corre más rápidamente, sin necesidad de ajuste especial.

Que es un proceso
Un proceso es un programa ejecutándose en forma independiente y con un espacio propio de memoria. Un Sistema Operativo multitarea es capaz de ejecutar mas de un proceso simultáneamente. Un Thread o hilo es un flujo secuencial simple dentro de un proceso. Un único proceso puede tener varios hilos ejecutándose. Por ejemplo, el programa Mozilla seria un proceso, mientras que cada una de las ventanas que se pueden tener abiertas simultáneamente trayendo páginas HTML estaría formada por al menos 1 hilo.

Un sistema multitarea da realmente la impresión de estar haciendo varias cosas a la vez y eso es una gran ventaja para el usuario. Sin el uso de Threads hay tareas que son prácticamente imposibles de ejecutar, particularmente las que tienen tiempos de espera importantes entre etapas.

Los Threads o hilos de ejecución permiten organizar los recursos de la PC de forma que pueda haber varios programas actuando en paralelo. Un hilo de ejecución puede realizar cualquier tarea que pueda realizar un programa  normal y corriente. Bastara con indicar lo que tiene que hacer en el método run(), que es el que define la actividad principal de las tareas.

Que significa Multi-Threading
La Maquina Virtual Java (JVM) es un sistema multi-thread. Es decir, es capaz de ejecutar varias secuencias de ejecución (programas) simultáneamente.

La programación multithreading (multi-hilo) permite la ocurrencia simultánea de varios flujos de control. Cada uno de ellos puede programarse independientemente y realizar un trabajo, distinto, idéntico o complementario, a otros flujos paralelos.

Un procesador ejecuta las instrucciones secuencialmente una después de la otra. A esta ejecución secuencial de instrucciones se le llama un Execution Thread (Hilo de Ejecución).

Multithreading es cuando se están ejecutando varios threads simultáneamente.

Si un procesador ejecuta las instrucciones secuencialmente, una después de la otra ¿Cómo hace para ejecutar varios threads simultáneamente? No puede hacer, pero puede simular que lo hace.

No hay comentarios:

Publicar un comentario