Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contexto de ejecucin, proceso liviano (lightweight) Un flujo secuencial de instrucciones dentro de un programa
Hilo Programa
Multiprocesos vs Multihilos
Multiproceso:
Dos o ms programas (procesos) independientes ejecutndose en forma paralela Cada proceso tiene su propio espacio de memoria, su propio conjunto de variables, su propia pila, etc. El control lo tiene el sistema operativo
Multihilo:
Dos o ms tareas ejecutndose en forma paralela dentro de un programa Comparten los recursos del programa El control lo tiene el programa
Programa
Multihilo
Recursos variables, pila, archivos, sockets, etc.
Hilos
Hilos
El mtodo run()
Mtodo de la clase Thread, es el que realiza el trabajo, el que se llama para que arranque un hilo su ejecucin Est mtodo es el que se tiene que redefinir (override) para que tu hilo haga algo El mtodo run en la clase Thread no hace nada Cuando un objeto tiene en ejecucin el mtodo run(), ese hilo est compitiendo con los dems hilos activos por recursos del sistema (CPU) Cuando un objeto termina la ejecucin de su mtodo run(), el hilo se muere
En caso de que los objetos que se quieren ejecutar en un hilo pertenezcan a una clase que extiende a otra
Comentarios preliminares
El arranque de hilos se realiza en dos pasos: Crear una instancia de la clase Thread Llamar al mtodo run() del objeto creado La llamada al mtodo run() no se hace directamente, sino que se llama al mtodo start() del objeto, esto causa que la mquina virtual llame a run() El mtodo sleep(long x) de la clase Thread, ocasiona que el hilo deje de competir por los recursos durante x milisegundos, despus de ese tiempo, comienza a pelear por recursos otra vez Al llamar a start, automticamente hay dos hilos corriendo, el que se arranc con start() y el que ejecut la llamada
Estados de un hilo
Hilo nuevo
Ejecutable
Detenido
Muerto
Estados de un hilo
New Thread() start() yield() - sleep(x) - wait() - bloqueado en I/O - suspend()
Nuevo
- El mtodo run() termin su ejecucin - stop()
Ejecutable
Detenido
- Transcurrieron x msegs - notify() o notifyAll() - se complet I/O - resume()
Muerto
Estados de un hilo
new Tread(...)
Creado, pero no todava no comienza ejecucin crea los recursos necesarios para su ejecucin, lo deja listo para que la mquina virtual lo ponga a correr llamando al mtodo run(), compite por los recursos del sistema La mquina virtual puede seleccionar otro hilo para ejecucin, para salir de este estado la accin debe de corresponder a la accin que lo bloque
Termin run(), una vez muerto un hilo no puede volver a ejecucin
start()
Muerto