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.