java

Páginas: 9 (2169 palabras) Publicado: 11 de mayo de 2014
Programación concurrente multihilo


Un programa multihilo contiene dos o más partes que se pueden ejecutar al “mismo tiempo”. Cada hilo define una ruta de ejecución separada.

Multitarea puede estar basada en procesos o puede estar basada en hilos. La primera hace referencia a ejecutar dos o más programas al “mismo tiempo”, y la segunda va orientada a ejecutar un solo programa, pero éstepuede desarrollar dos o más tareas a la vez (dos métodos o más ejecutándose al “mismo tiempo”).

Programación basada en multiprocesos: varios procesos (aplicaciones) ejecutándose al “mismo tiempo”.

Programación basada en multihilos o subprocesos: varias partes de un programa ejecutándose al “mismo tiempo”.

Un hilo es un flujo de control de un programa.

Se ejecutan en un mismo espacio dedirecciones, esto significa que los hilos comparten variables de contenido pero no las variables locales. Se requiere de una sincronización, ya que no se pueden tener varios hilos tratando de acceder a las mismas variables sin ningún tipo de coordinación, ya que esto puede afectar en los resultados obtenidos, ya que no serán los esperados.

Un hilo puede reservarse el derecho de usar un objetohasta que termine la tarea que está haciendo.

Un hilo nuevo nace cuando creamos un objeto de la clase Thread o cuando hacemos uso de la interface Runnable (ambas del paquete java.lang) y creamos un objeto que contenga un método “ejecutable”.

Sinónimos

Thread = hilo = subproceso = flujo de control = tarea

Comparación de un programa de flujo único contra uno de flujo múltiple

Flujoúnico
Utiliza un único flujo de control (Thread) para controlar su ejecución













Flujo Múltiple
Utiliza muchos flujos de control para cumplir su trabajo.

Mientras que los programas de flujo único pueden realizar su tarea ejecutando subtareas secuencialmente, un programa multihilo (multitarea) permite que cada tarea comience y termine tan pronto como sea posible.Estados de un hilo:

Nuevo
Listo o preparado
Suspendido
Dormido
Bloqueado
Terminado

La figura que viene a continuación, ustedes la tienen completa en su libreta, se las dibuje en el pintaron.

El estado de creado es generado cuando creamos el hilo, a través de new Thread().

A través del método start() pasa a un estado de preparado o listo, en este momento está enespera de que se le sea asignado un tiempo en el procesador (por parte del Scheluder), cuando sucede esto, pasa al estado de ejecución, una vez estando en este último puede pasar, como se ve en la figura a cualquiera de los seis estados ilustrados en la figura, para pasar a cada uno de estos se hace uso de diversos métodos, excepto para regresar al estado de listo o preparado, ya que si pasa demanera directa indica que se le ha terminado el tiempo que se le asigno, y deberá de dejar el procesador, y esperar nuevamente su turno para continuar o finalizar la tarea que se le haya asignado realizar.

Para pasar a un estado de dormido, se utiliza el método sleep(), una vez terminado el tiempo especificado, se “despierta” y regresa al estado de preparado (o listo).

Para pasar a un estado deespera, se utiliza el método wait() en sus diversas versiones, y para quitar este estado se hace uso del método notify(), o notifyAll() y regresa al estado de preparado (o listo).

Cuando pasa a un estado de bloqueo, significa que se generó una solicitud de Entrada/Salida, una vez terminada esta solicitud, se quita el bloqueo y regresa al estado de preparado (o listo).

Para pasar al estadode suspendido, se debe ejecutar el método suspend(), para reanudarlo se ejecuta el método resume()y regresa al estado de preparado (o listo).

Para pasar al estado de terminado, pueden haber sucedido dos cosas, una que se haya terminado de ejecutar el método run(), o que se haya ejecutado el método stop().

Java ofrece otros métodos que permiten enviar al hilo cuando esté en ejecución a...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Java
  • Java
  • java
  • JAVA
  • java
  • java
  • javiera
  • Java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS