miércoles, 25 de abril de 2012

hilo o hebra


HILO

Un hilo es un proceso que se está ejecutando en un momento determinado en nuestro sistema operativo, como cualquier otra tarea, esto se realiza directamente en el procesador. Existen los llamados 'demonios' que son los procesos que define el sistema en sí para poder funcionar y otros que llamaremos los hilos definidos por el usuario o por el programador, estos últimos son procesos a los que el programador define un comportamiento e inicia en un momento específico.

Existen dos maneras de creación de un hilo:

·         Thread

La clase Thread es la clase responsable de producir hilos funcionales para otras clases. Para

añadir la funcionalidad de hilo a una clase simplemente se deriva la clase de Thread y se

ignora el método run. Es en este método run donde el procesamiento de un hilo toma lugar, y

a menudo se refieren a él como el cuerpo del hilo. La clase Thread también define los

métodos start y stop, los cuales te permiten comenzar y parar la ejecución del hilo, además de un gran número de métodos útiles.



·         Runnable

Java no soporta herencia múltiple de forma directa, es decir, no se puede derivar una clase de

varias clases padre. Esto nos plantea la duda sobre cómo podemos añadir la funcionalidad de

Hilo a una clase que deriva de otra clase, siendo ésta distinta de Thread. Para lograr esto se

utiliza la interfaz Runnable. La interfaz Runnable proporciona la capacidad de añadir la

funcionalidad de un hilo a una clase simplemente implementando la interfaz, en lugar de

derivándola de la clase Thread.



Los estados de un hilo son los siguientes;



Nuevo (new): Este es el estado en que un hilo se encuentra después de que un objeto de la clase Thread ha sido instanciado pero antes de que el método start() sea llamado.

- En ejecución (runnable): Este es el estado en que un hilo puede ser elegido para ser ejecutado por el programador de hilos pero aún no está corriendo en el procesador. Se obtiene este estado inmediatamente después de hacer la llamada al método start() de una instancia de la clase Thread.



- Ejecutándose (running): Este es el estado en el que el hilo está realizando lo que debe de hacer, es decir, está realizando el trabajo para el cual fue diseñado.



- Esperando/bloqueado/dormido (waiting/blocked/sleeping): Es el estado en el cual el hilo está vivo aún pero no es elegible para ser ejecutado,es decir, no está en ejecución pero puede estarlo nuevamente si algún evento en particular sucede. Por ejemplo, un hilo puede estar durmiendo por que en el código se le ha pedido que lo haga pero pasa a estado en ejecución cuando el tiempo que se le pidió dormir ha expirado.



- Muerto (dead): Un hilo está muerto cuando se han completado todos los procesos y operaciones contenidos en el método run(). Una vez que un hilo ha muerto NO puede volver nunca a estar vivo, recordemos que no es posible llamar al método start() más de una vez para un solo hilo.

- Hilo Durmiendo (sleeping):

El método sleep() es un método estático de la clase Thread. Generalmente lo usamos en el código para pausar un poco la ejecución de un proceso en particular forzándolo a dormir durante un tiempo determinado.





No hay comentarios:

Publicar un comentario