ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Definir el concepto de hilo (thread).


Enviado por   •  22 de Mayo de 2016  •  Ensayos  •  7.627 Palabras (31 Páginas)  •  232 Visitas

Página 1 de 31

El estudio de este módulo le proporcionará los conocimientos necesarios para:[pic 2][pic 3]

  • Definir el concepto de hilo (thread).
  • Crear diferentes hilos en un programa Java controlando el código y los datos usados por cada hilo.
  • Controlar la ejecución de un hilo y escribir código independiente de la plataforma con hilos.
  • Describir las dificultades que pueden surgir cuando varios hilos comparten los mismos datos.
  • Usar wait y notify para establecer la comunicación entre hilos.
  • Usar synchronized para proteger la integridad de los datos.

Este módulo cubre el procesamiento multihilo, que permite a un

programa ejecutar múltiples tareas al mismo tiempo.

Una forma simple de ver un PC seria considerarlo como un dispositivo dotado de una CPU que realiza los cálculos, una memoria que contiene el programa ejecutado por la CPU y una memoria que contiene los datos con los que opera el programa. Según esta perspectiva, sólo se lleva a cabo un trabajo. Una forma más completa de ver los sistemas informáticos modernos incluye la posibilidad de realizar más de un trabajo al mismo tiempo.

No debe preocuparse ahora de cómo se consigue el rendimiento para el procesamiento multitarea, tenga en cuenta únicamente las implicaciones desde el punto de vista de la programación. Llevar a cabo varios trabajos es como tener varios sistemas de computación. En lo que respecta a este módulo, un hilo, o contexto de ejecución, es el encapsulamiento de una CPU virtual con su propio código y datos de programa. La clase java. lang.Thread permite crear y controlar los hilos.

Nota: A lo largo del módulo, utilizaremos el término Thread para referirnos a la clase java.lang.Thread e hilo para referirnos a los contextos de ejecución.

Un hilo o contexto de ejecución se compone de tres partes fundamentales:

  • Una CPU virtual.
  • El código que ejecuta la CPU.
  • Los datos con los que trabaja el código.

Un proceso es un programa en ejecución. Uno o varios hilos constituyen un proceso. Un hilo se compone de la CPU, el código y los datos, como se ilustra en la Figura 15-1.

Hilo 0[pic 4]

contexto de ejecución

Figura 15-1 Partes de un hilo

T        A Sjt- * it[pic 5]

Hilo»


Varios hilos pueden íompartir el mismo código, con independencia de los datos Esto o( une cuando ejecutan código desde distintas instancias de la misma ciase.

De la misma forma, varios hilos pueden compartir los mismos datos, con independencia del código. Esto ocurre cuando comparten el acceso a un mismo objeto.

En programación lava, la CPU virtual se encapsula como una instancia de la í lase Thi ead. Cuando se construye un hilo, el código y los datos que dolmen su contexto vienen especificados por el objeto que se pasa a su v ons truc ton

Creación del hilo

En esta sección se explica la forma de crear un hilo y usar los argumentos del constructor para suministrar el código y los datos que utiliza el hilo durante su ejecución.

El constructor de Thread utiliza como argumento una instancia de Runnable. Esta instancia se crea a partir de una clase que implementa la interfaz Runnable (es decir, proporciona un método pubiic void run()).

Por ejemplo:

  1. pubiic class ThreadTester {
  2. pubiic        static void        main(String        args[]) {
  3. HelloRunner r = new HelloRunner();
  4. Thread t =        new        Thread(r);
  5. t.start();
  6. }
  7. }

8

  1. class HelloRunner implements Runnable {
  2. int i;

11

  1. pubiic        void run()        {
  2. i = 0;

14

  1. while (true)        {
  2. System.out.println("Hola " + i++);
  3. if ( i « 50 ) {
  4. break;

Lengua)» de programación Java

Copyright 200S aun Mteroiyatama, Irvc Todos toa darachoa matrvMto* Sun Strvka*. R*vta*on <32

  1. }
  2. }
  3. }
  4. }

En primer lugar, el método mam construye una instancia r de la clase HelloRunner. La instancia r tiene sus propios datos, en este caso, el entero i. Dado que la instancia, r, se ha pasado al constructor de la clase Thread, el entero i de r es el dato con el que el hilo debe trabajar durante su ejecución. F;.l hilo siempre empieza a ejecutarse en el método run de la instancia de Runnable que se haya cargado (en este caso x).

Los entornos de programación multihilo permiten crear múltiples hilos basados en la misma instancia de Runnable. Puede hacerlo de la siguiente manera:

Thread ti = new Thread(r);

Thread t2 = new Thread(r);

En este caso, ambos hilos comparten ¡os datos y el código.

En resumen, la referencia a un hilo se efectúa a través de una instancia de un objeto Thread. El hilo empieza a ejecutarse al principio del método run de la instancia de Runnable que se encuentre cargada. Los datos con los que trabaja el hilo se obtienen de la instancia concreta de Runnable, que se pasa al constructor de ese Thread (Figura 15-2).

Nuevo hilo

[pic 6]

Figura 15-2 Creación de hilos

Hilo»

Inicio del hilo

Los hilos recien creados no empiezan a ejecutarse de forma automática. Es necesario llamar a su método start;. Por ejemplo, puede ejecutar el comando siguiente, como en la línea 5 del ejemplo anterior:

t.start();

La llamada a start pone la CPU virtual encapsulada en el hilo en estado ejecutable, lo que significa que es posible planificar su ejecución por parte de la maquina virtual de Java (JVM). Esto no significa necesariamente que el hilo se ejecute de inmediato.

...

Descargar como (para miembros actualizados)  txt (42.3 Kb)   pdf (652.7 Kb)   docx (2.6 Mb)  
Leer 30 páginas más »
Disponible sólo en Clubensayos.com