Está en la página 1de 7

Hilos en java

Cesar Batallas Moreno


Resumen
En el contexto de un proceso un hilo es una secuencia de cdigo que no puede iniciarse por si
solo y requiere la inspeccin de un proceso mayor denominado padre para su ejecucin. Dentro
de los procesos existen varios hilos ejecutndose como por ejemplo Word puede tener varios
hilos corriendo entre si como el chequeado de gramtica automtico conocido como
Background al instante de escribir un texto, otro hilo puede guardar el texto de manera
automtica, en si cada proceso puede correr diversos hilos con el fin de realizar diversas tareas,
los hilos se encuentran asociado con un proceso en particular.

Palabras clave: hilo, secuencia de cdigo, proceso, ejecucin

Abstract
In the context of a process, a thread is a sequence of code that can not be started by itself and
requires inspection of a larger process called father for execution. Within the process there are
several threads running as Word may have several threads running each as checked automatic
grammar known as Background instantly write a text, another thread can save the text
automatically, whether each process can various threads running in order to perform various
tasks, threads are associated with a particular process.

Keywords: thread, string code, process, execution








1 Clases Relacionadas con los Hilos
La programacin en java soporta hilos por medio de un conjunto de clases y una interfaz simple
que incluyen varias funcionalidades sobre los hilos estas clases mencionadas pertenecen al
paquete Java.lang. donde tenemos:

Runnable
Object
Thread
ThreadDeath
ThreadGroup

Runnable
en java no soporta herencia multiple esto quiere decir que no puede ser establecida desde una
clase padre. Donde nos surge la inquietud si se le podr aadir dicha funcionalidad del hilo de
una clase establecida por otra clase siendo diferente a la clase Thread para lograr esto la interfaz
Runnable tiene la capacidad de agregar dicha funcion de un hilo a una clase solo efectuando la
interfaz en vez de derivada de la clase Therad. ( Inmaculada Gonzalez Perez, Antonio Juan
Sanchez Martin, David Vicente Hernandez, 2002)
Object
La clase objeto nos permite la utilizacin de mtodos trascendentales en la arquitectura multihilo
de java. Como son notify, wait y notiftAll.
mtodo notify permite que un subproceso en espera cambie al estado ejecutable de
nuevo.
mtodo wait libera el bloqueo de monitor en el objeto, y el subproceso queda en el
estado en espera mientras el otro subproceso trata de entrar a la(s) instruccin(es) o
mtodo(s) synchronized del objeto.
El metodo notifyAll es similar a notify excepto que se aplica a todos los hilos en espera.
Estos tres metodos solo pueden ser llamados desde un metodo o bloque sincronizado (o
bloque de sincronizacion). (DEITEL, PAUL J. Y HARVEY M. DEITEL , 2008)




Thread
la clase Thread tiene como principal funcin de desarrollar hilos funcionales para otras clases y
para realizar dicha funcin se requiere derivar la clase de Thread y se excluye el mtodo run.
Este mtodo es donde se desarrolla el procesamiento de un hilo y se lo menciona como el cuerpo
principal del hilo. Teniendo en cuenta tambin que en la clase Thread se definen los mtodos
start y stop los cuales permiten comenzar y detener la ejecucin del hilo. ( Inmaculada Gonzalez
Perez, Antonio Juan Sanchez Martin, David Vicente Hernandez, 2002)

ThreadDeath
Es un mecanismo donde su funcin principal es hacer la limpieza despus de que un hilo haya
terminado de forma no sincronizada. Se denomina ThreadDeath como una clase de error por que
esta se deriva de la clase Error la cual permite el manejo y notificacin de errores, cuando se
invoca el mtodo stop en un hilo una instancia de ThreadDeath es lanzada como hilo de error. Se
debe implementar el objeto ThreadDeath para poder realizar la limpieza especifica de la
terminacin no sncrona , el objeto debe ser lanzando para que el hilo realmente muera. (
Inmaculada Gonzalez Perez, Antonio Juan Sanchez Martin, David Vicente Hernandez, 2002)

ThreadGroup
Se usa para manejar un grupo determinado de hilos en conjunto permite que un medio pueda
controlar de manera eficiente una serie de hilos como por ejemplo ThreadGroup posee los
mtodos stop , suspend y resume para el manejo de ejecucin de los hilos que pertenecen al
grupo. Dichos grupos tambien pueden tener otro grupo de hilos estableciendo una jerarqua
anidada de hilos donde los hilos individuales no tienen acceso al padre del grupo pero si al
grupo. ( Inmaculada Gonzalez Perez, Antonio Juan Sanchez Martin, David Vicente Hernandez,
2002)

Habitualmente estos mtodos son utilizados solo cuando hay una ejecucin multihilo cuando un
mtodo se encuentra en modo de espera hasta que otro mtodo en ejecucin termine el proceso
antes de continuar o sea el hilo en ejecucin le notifica al siguiente hilo para que pueda
continuar. En java la clase objeto se encuentra en la parte superior de la jerarqua lo que implica
que es el padre de todas las clases esto quiere decir que cada clase hereda la funcionalidad dada
por la clase objeto incluyendo los mtodos notify , notifyAll y wait. ( Inmaculada Gonzalez
Perez, Antonio Juan Sanchez Martin, David Vicente Hernandez, 2002)





2. Creacin de Hilos
El mtodo run es aquel donde se desarrolla el cdigo correspondiente a la tarea que el hilo debe ejecutar.
Este mtodo no se lo invoca directamente (sin que se quiera que se ejecute en su propio hilo). La manera
de arrancar de los hilos es a travs del mtodo start, para suspender se usa el mtodo suspend y con el
mtodo resume permite reanudar adems se puede parar con el mtodo stop cabe sealar que un hilo
suspendido puede volver a reanudarse en la instruccin del mtodo run donde fue suspendido
En el caso de crear un hilo extendiendo la clase Thread, se pueden heredar los metodos y variables de la
clase padre. Si es asi, una misma subclase solamente puede extender o derivar una vez de la clase padre
Thread. Esta limitacin de Java puede ser superada a travs de la implementacin de Runnable.
( Inmaculada Gonzalez Perez, Antonio Juan Sanchez Martin, David Vicente Hernandez, 2002)

3. Estados de un Hilo
Para saber que estado se encuentra un hilo debe dependerse del comportamiento en que este se
podria decir en que operaciones este actuando como tenemos los siguientes ejemplos de estados
en java:


Runnable
New
Not running
Dead






Runnable
Cuando se invoca el metodo start o run el hilo entra en estado runnable o llamado running
significa que el hilo esta corriendo se debe tomar en cuenta que aunque el hilo este
corriendo del punto de vista de usuario todos lo hilos excepto los que el cpu esta usando
estan en modo runnable listos para ejecutarse en cualquier momento dado, se debe
recordar que todos los hilos comparten los recursos del sistema. (Luis Joyanes Aguilar
,Matilde Fernandez Azuela, 2002)
New
El hilo en estado new se crea la primera vez hasta que el mtodo start sea invocado. S
inicializan los hijos del estado new listos para empezar a ejecutarse. Pero sin ser
notificados para que empiecen trabajar. (Luis Joyanes Aguilar ,Matilde Fernandez
Azuela, 2002)
Not running
Se aplica a todos los hilos que se encuentren detenidos por alguna situacin, cuando un
hilo se encuentre en este estado estar listo para volver a ser usado pasando al estado
runnable en un determinado momento . los hilos pueden cambiar al estado not running
por varias situaciones como:
El metodo wait ha sido llamado
El metodo suspend ha sido llamado
El metodo sleep ha sido llamado
El hilo esta bloqueado por I/O
Estas son las siguientes acciones para que un hilo pase al estado not running existe una
forma para volver hacer que el hilo vuelva al estado runnable.
Si un hilo esta suspendido, la invocacion del metodo resume
Si un hilo esta durmiendo, pasaran el numero de milisegundos que se ha
especificado que debe dormir
Si un hilo esta esperando, la llamada a notify o notifyAll por parte del
objeto por el que espera
Si un hilo esta bloqueado por I/O, la Iinalizacion de la operacion I/O en cuestion

Dead
Un hilo entra en estado dead cuando ya no es un objeto necesario. Los hilos en
estado dead no pueden ser resucitados y ejecutados de nuevo. Un hilo puede
entrar en estado dead a traves de dos vias:
El metodo run termina su ejecucion.
El metodo stop es llamado.
La primera opcion es el modo natural de que un hilo muera. Uno puede
pensar en la muerte de un hilo cuando su metodo run termina la
ejecucion como una muerte por causas naturales. En contraste a esto, esta
la muerte de un hilo 'por causa de su metodo stop. Una llamada al
metodo stop mata al hilo de modo asincrono. (DEITEL, PAUL J. Y
HARVEY M. DEITEL , 2008)
Conclusines
Un hilo es una secuencia de cdigo en ejecucin dentro del contexto de un proceso.
-Los hilos dependen de un programa padre en lo que se refiere a recursos de ejecucin.
La clase Thread es la clase responsable de producir hilos Iuncionales para otras clases. La
interIaz Runnable proporciona la capacidad de aadir la Iuncionalidad de un hilo a una
clase en lugar de derivandola de la clase Thread.
Para iniciar un hilo se llama a su metodo start el cual invoca al metodo run del propio
hilo. Todo la tarea del hilo debe estar dentro del metodo run.
Para finalizar la ejecucin de un hilo utiliza el metodo stop. La clase ThreadGroup es la
implementacin del concepto de grupo de hilos en Java.
Cada hilo tiene una prioridad, que no es mas que un valor entero entre 1 y 10, de modo
que cuanto mayor el valor, mayor es la prioridad.

Referencias Bibliogrficas

2002). http://zarza.usal.es. Obtenido de http://zarza.usal.es/~fgarcia/docencia/poo/01-
02/trabajos/S3T3.pdf
DEITEL, PAUL J. Y HARVEY M. DEITEL . (2008). como programar en java (Sptima edicin ed.).
Mexico.
Luis Joyanes Aguilar ,Matilde Fernandez Azuela. (2002). JAVA 2 MANUAL DE PROGRAMACIN.
Madrid: McGraw-Hill.