procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/u2/conceptohilos.pdf ·...

30
Procesos, hilos y multihilos

Upload: others

Post on 26-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Procesos,hilosymultihilos

Page 2: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados
Page 3: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Objetivos

• Describir el concepto de hilos, procesos ymulti hilos.

• Identificar los estados y control de hilos.

Page 4: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Procesos

¿Quéesunproceso?

“Un proceso es un programa ejecutándose dentro de su propioespacio de direcciones”.

“Son instrucciones de un programa destinadas a ser ejecutadas por elmicroprocesador”

Page 5: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

ProcesosSepuededecirqueunprocesoesunsupervisor dehilo(s)deejecución.

Page 6: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Hilos• Un hilo es una secuencia de código en ejecución dentro del

contexto de un proceso.• Los hilos no pueden ejecutarse ellos solos.• Requieren la supervisión de un proceso padre para correr.• Dentro de cada proceso hay un hilo o varios hilos

ejecutándose.

Page 7: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Ventajasdehilos• La ventaja que proporcionan los hilos es la capacidad de tener más

de un camino de ejecución en un mismo programa.• Multihilos en aplicaciones Cliente-Servidor• Agilizar los tiempos de retraso de la comunicación cliente-servidor.

Hilo1:Texto

Hilo2:Imágenes

Page 8: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Ejemplodehilos• Word puede tener un hilo en background chequeando

automáticamente la gramática de lo que se escribe, mientrasotro hilo puede estar guardando automáticamente loscambios del documentoen el que se trabaja.

Page 9: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Hilosyprocesos• Los hilos a menudo son conocidos o llamados procesos

ligeros.

• Loshilosdependendeunprogramapadreenloqueserefierearecursosdeejecución.

Page 10: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Hilosyprocesos• Los hilo siempre existen dentro de un proceso, lo necesitan.• Java Virtual Machine implementa le gestión de hilos.

Hiloshijos

Page 11: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Estadosycontroldehilos

Page 12: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Estadosdeunhilo

Semántica de los estados de un hilo.

Page 13: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Estadosdeunhilo

El comportamiento de un hilo depende delestado en que se encuentre, este estadodefine su modo de operación actual. Losestados en los que puede estar un hilo Java:

• New• Running• Not running• Dead

Page 14: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Estadosdeunhilo

NewRunning

Dead

Not running

Not running

Not running

Page 15: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

EstadosNew

Un hilo se encuentra en el estado new la primera vez que secrea y hasta que el método start es llamado.

Los hilos en estado new ya han sido inicializados y están listospara empezar a trabajar, pero aún no han sido notificados paraque empiecen a realizar su trabajo.

Page 16: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

EstadosRunning

Cuando se llama al método start de un hilo nuevo, elmétodo run es invocado y el hilo entra en el estadorunning.

Este estado podría llamarse “running” porque laejecución del método run significa que el hilo estacorriendo.

Page 17: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

EstadosNot Running

El estado not running se aplica a todos los hilos que estánparados por alguna razón. Cuando un hilo está en esteestado, está listo para ser usado y es capaz de volver alestado running en un momento dado. Los hilos puedenpasar al estado not running a través de varias vías.

• El método suspend()• El método sleep ()• El métodowait()• El método interrupt()

Page 18: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

EstadosDead

Un hilo entra en estado dead cuando ya no es un objetonecesario. Los hilos en estado dead no pueden serresucitados y ejecutados de nuevo. Un hilo puede entraren estado dead a través de dos vías:

• El método run termina su ejecución.• El método stop es llamado.

La primera opción es el modo natural de que un hilo muera.La segunda es unamuerte causada.

Page 19: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

HilosenJava

Page 20: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Estados

New

Not Running

Running

Dead

Page 21: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Estados

New

Dead

Running

Not Running

Page 22: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Arranquedeunhilo

start()

Ø Este método indica al intérprete de Java que cree un contexto del hilo del sistema ycomience a ejecutarlo.

Ø A continuación, el método run() de este hilo será invocado en el nuevo contexto delhilo.

Ø start, en realidad es un método oculto en el hilo que llama al método run.

Page 23: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Manipulacióndelhilo

run()

Ø Elmétodo run() constituyeelcuerpodeunhiloenejecución.EsteeselúnicométododelinterfazRunnable.

Ø Esllamadoporelmétodostart() despuésdequeelhiloapropiadodelsistemasehayainicializado.

Ø Siemprequeelmétodo run() devuelvaelcontrol,elhiloactualsedetendrá.

Page 24: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Paradadeunhilo

stop()

Ø Este método provoca que el hilo se detenga de manera inmediata. A menudoconstituye una manera brusca de detener un hilo, especialmente si este método seejecuta sobre el hilo en curso.

Ø Una forma más elegante de detener un hilo es utilizar alguna variable que ocasioneque el método run() termine de manera ordenada.

Ø En realidad, nunca se debería recurrir al uso de este método (se encuentradeprecated = desaprobado)

Page 25: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Suspensióndehilos

suspend()

Ø Elmétodosuspend() esdistintodestop().

Ø suspend() tomaelhiloyprovocaquesedetengasuejecuciónsindestruirelhilodesistemasubyacente.

Ø Silaejecucióndeunhilo sesuspende, puedellamarsearesume() sobreelmismohiloparalograrquevuelvaaejecutarsedenuevo.

Ø Esparecidoalsleep(time) conladiferenciaquesuspend() esportiempo indefinido.

Page 26: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

resume()

Ø El método resume() se utiliza para revivir un hilo suspendido.

Ø No hay garantías de que el hilo comience a ejecutarse inmediatamente, ya quepuede haber un hilo de mayor prioridad en ejecución actualmente, pero resume()ocasiona que el hilo vuelva a ser un candidato a ser ejecutado.

Page 27: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Prioridadesenhilos

setPriority(int )

Ø ElmétodosetPriority() asignaalhilolaprioridad indicadaporelvalorpasadocomoparámetro.

Ø Hayconstantespredefinidasparalaprioridad, definidasenlaclaseThread,talescomoMIN_PRIORITY,NORM_PRIORITYyMAX_PRIORITY,quetomanlosvalores1,5y10,respectivamente.

Page 28: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Prioridadesenhilos

getPriority()

Ø Estemétododevuelve laprioridad delhilodeejecuciónencurso,queesunvalorcomprendido entreunoydiez.

Page 29: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Identificacióndehilos

setName(String )

Ø Estemétodopermiteidentificaralhiloconunnombre.Deestamanerasefacilitaladepuracióndeprogramasmultihilo.

Ø ElnombreapareceráentodaslaslíneasdetrazadoquesemuestrancadavezqueelintérpreteJavaimprimeexcepcionesnocapturadas.

getName()

Ø Estemétododevuelveelvaloractual,detipocadena,asignadocomonombrealhiloenejecuciónmediantesetName().

Page 30: Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf · 2017-10-11 · • Los hilos dependen de un programa padre en lo que se ... Hilos hijos. Estados

Controldehilos

Identificacióndehilos

boolean isAlive()

Retornatruesielthread seencuentraenelestadoAlive (enalgunodesussubestados),estoes,yahacomenzadoyaunnohaterminado.