You are on page 1of 9

Hilos (Threads)‫‏‬

Contexto de ejecución, proceso liviano (lightweight)‫‏‬ Un flujo secuencial de instrucciones dentro de un programa

Hilo Programa

su propio conjunto de variables. etc.Multiprocesos vs Multihilos  Multiproceso:    Dos o más programas (procesos) independientes ejecutándose en forma “paralela” Cada proceso tiene su propio espacio de memoria. su propia pila. El control lo tiene el sistema operativo  Multihilo:    Dos o más “tareas” ejecutándose en forma “paralela” dentro de un programa Comparten los recursos del programa El control lo tiene el programa .

Programa Multihilo Recursos variables. Hilos Hilos . archivos. etc. sockets. pila.

ese hilo está compitiendo con los demás hilos activos por recursos del sistema (CPU)‫‏‬ Cuando un objeto termina la ejecución de su método run(). el que se llama para que arranque un hilo su ejecución Esté método es el que se tiene que redefinir (override) para que tu hilo haga algo El método run en la clase Thread no hace nada Cuando un objeto tiene en ejecución el método run(). el hilo se muere . es el que realiza el trabajo.El método run()‫‏‬      Método de la clase Thread.

programando el método run()‫‏‬  En caso de que los objetos que se quieren ejecutar en un hilo pertenezcan a una clase que extiende a otra . reprogramando el método run()que está vacio  La manera natural de crear hilos  Implementar la interfaz Runnable.Dos maneras de crear un hilo de ejecución  Extender la clase Thread.

Comentarios preliminares     El arranque de hilos se realiza en dos pasos:  Crear una instancia de la clase Thread  Llamar al método run() del objeto creado La llamada al método run() no se hace directamente. el que se arrancó con start() y el que ejecutó la llamada . esto causa que la máquina virtual llame a run()‫‏‬ El método sleep(long x) de la clase Thread. sino que se llama al método start() del objeto. automáticamente hay dos hilos corriendo. comienza a pelear por recursos otra vez Al llamar a start. después de ese tiempo. ocasiona que el hilo deje de competir por los recursos durante x milisegundos.

Estados de un hilo  Hilo nuevo  Hilo recién creado Compitiendo por CPU No compitiendo por CPU  Ejecutable   Detenido   Muerto .

bloqueado en I/O .wait()‫‏‬ .Estados de un hilo New Thread()‫‏‬ start()‫‏‬ yield()‫‏‬ .stop()‫‏‬ Ejecutable Detenido .suspend()‫‏‬ Nuevo .sleep(x)‫‏‬ .notify() o notifyAll()‫‏‬ .Transcurrieron x msegs .resume()‫‏‬ Muerto .El método run() terminó su ejecución .se completó I/O .

.)‫‏‬  Creado. para salir de este estado la acción debe de corresponder a la acción que lo bloqueó Terminó run(). pero no todavía no comienza ejecución crea los recursos necesarios para su ejecución. lo deja listo para que la máquina virtual lo ponga a correr llamando al método run(). compite por los recursos del sistema La máquina virtual puede seleccionar otro hilo para ejecución.. sleep() o wait()‫‏‬   Muerto  .Estados de un hilo  new Tread(. una vez muerto un hilo no puede volver a ejecución  start()‫‏‬   Bloqueado por I/O.