Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Hilos en Java - Apuntes - Programación, Apuntes de Ingeniería Infórmatica

Pontificia Universidad Católica Madre y Maestra (PUCMM). Apuntes de Ingeniería Infórmatica. Curso de Programación. Los hilos son similares a los procesos en que ambos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos son una forma de dividir un programa en dos o más tareas que corren simultáneamente.

Tipo: Apuntes

2012/2013

Subido el 12/06/2013

Jaime_89
Jaime_89 🇩🇴

4.5

(107)

467 documentos

1 / 5

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
PONTIFICIA UNIVERSIDAD CATOLICA MADRE Y MAESTRA
FACULTAD DE CIENCIAS DE LA INGENIERIA
DEPARTAMENTO DE INGENIERIA EN SISTEMAS
T7: HILOS EN JAVA.
MATERIA:
PROGRAMACION 1
ISC 202-001
FECHA DE ENTREGA:
26 DE MARZO DE 2006
SANTIAGO, REP. DOM.
Hilos o hebras (en inglés, threads).
Los hilos son similares a los procesos en que ambos representan una
secuencia simple de instrucciones ejecutada en paralelo con otras
secuencias. Los hilos son una forma de dividir un programa en dos o
más tareas que corren simultáneamente.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Hilos en Java - Apuntes - Programación y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

PONTIFICIA UNIVERSIDAD CATOLICA MADRE Y MAESTRA

FACULTAD DE CIENCIAS DE LA INGENIERIA

DEPARTAMENTO DE INGENIERIA EN SISTEMAS

T7: HILOS EN JAVA.

MATERIA:

PROGRAMACION 1

ISC 202-

FECHA DE ENTREGA:

26 DE MARZO DE 2006

SANTIAGO, REP. DOM.

Hilos o hebras (en inglés, threads).

Los hilos son similares a los procesos en que ambos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos son una forma de dividir un programa en dos o más tareas que corren simultáneamente.

A continuación se muestran las características más importantes con las que cuenta Java para soportar el uso de hilos:

El método run.

Es para indicarle al hilo lo qué debe hacer. El código de este método implementa el comportamiento en ejecución del hilo y puede hacer, prácticamente cualquier cosa capaz de ser codificada en Java. Existen dos técnicas para proveer un método run a un hilo: Haciendo una subclase de Thread y sobrecargando run Implementando la interface Runnable. Si las clases que elaboras deben ser subclases de otras clases (un caso común es Applet ), entonces debe usarse Runnable.

El ciclo de vida de un hilo.

Una vez que el hilo hace algo, se puede manejar el ciclo de vida de un hilo: como crear y arrancar un hilo, algunas cosas especiales que se pueden hacer mientras se ejecuta y como detenerlo.

En el siguiente diagrama se puede ver los estados en los que un hilo puede estar durante su vida.

Ciclo de vida de un hilo de Java, (The Java Tutorial).

Prioridades.

La gran ventaja que ofrecen los hilos es que corren de manera concurrente. Conceptualmente es cierto, pero en la práctica generalmente no es posible. La mayoría de las computadoras tienen un sólo procesador, por lo ende los hilos corren uno a la a tal velocidad que dan la ilusión de concurrencia ( scheduling ). El sistema de ejecución de Java soporta un algoritmo determinístico (para el scheduler) llamado fixed priority scheduling. Este algoritmo asigna tiempo de ejecución a un hilo basado en su prioridad relativa a los demás hilos que están listos para ejecutarse. Un nuevo hilo creado, hereda su prioridad del hilo que lo crea, ésta puede ser modificada con el método setPriority. Las prioridades son enteros entre MIN_PRIORITY y MAX_PRIORITY (constantes definidas en la clase Thread ). Entre más alto el entero, mayor prioridad. Si dos hilos con la misma prioridad están esperando que el CPU los ejecute, el scheduler escoge uno utilizando round-robin, es decir escoge uno aleatoriamente, se supone que round-robin ofrece iguales probabilidades de ejecución a los hilos en cuestión. El hilo escogido para ejecución, corre hasta que alguna de estas condiciones sea verdadera:

sistema seleccione un grupo razonable por omisión para el nuevo hilo. El hilo así creado es miembro permanente del grupo al cual se una durante su creación, no puede ser cambiado. Si se crea un hilo sin especificar su grupo en el constructor, el sistema de ejecución automáticamente pone el nuevo hilo en el mismo grupo que el hilo que lo crea. Cuando una aplicación de Java arranca, el sistema de ejecución de Java crea un ThreadGroup llamado main. A menos que se especifique lo contrario, todos los nuevos hilos que se creen durante el desarrollo de la aplicación serán miembros del grupo de hilos main. La clase Thread provee tres constructores que te permiten asignar a un grupo al hilo que se está creando. Finalmente la clase ThreadGroup provee un conjunto de métodos que te permiten obtener información como: qué otros hilos pertenecen al mismo grupo, modificar los hilos por grupo: suspenderlos, activarlos, detenerlos, etc. todo con una sóla invocación a los métodos respectivos. A manera de ejemplo se considera: ThreadGroup migrupo = new ThreadGroup (mi grupo de hilos);

Thread mihilo = new Thread (migrupo, Un hilo en mi grupo);

elgrupo = mihilo.getThreadGroup ( );

Thread

En Java los hilos se representan mediante una clase. La clase Thread encapsula todo el control necesario sobre los hilos. Hay que tomar la precaución de distinguir claramente un objeto Thread de un hilo en ejecución. Un objeto Thread se define como el panel de control o proxy de un hilo en ejecución. En el objeto Thread hay métodos que controlan si el hilo se está ejecutando, está durmiendo, en suspenso o detenido. La clase Thread es la única manera de controlar el comportamiento de los hilos. En la siguiente instrucción se muestra como acceder al hilo en ejecución actual: Thread t = Thread.currentThread(); //el hilo actual se almacena en la variable t

Runnable.

Si queremos tener más de un hilo necesitamos crear otra instancia de Thread. Cuando construimos una nueva instancia de Thread, necesitamos decirle que código ejecutar en el nuevo hilo de control. Se puede comenzar un hilo sobre cualquier objeto que implemente la interfaz Runnable. Runnable es una interfaz simple que abstrae la noción de que se desea que algún código se "ejecute" asíncronamente. Para implementar Runnable, a una clase le basta con implementar un solo método llamado run.