Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf ·...

Post on 26-Apr-2020

10 views 0 download

Transcript of Procesos, hilos y multihilosaisii.azc.uam.mx/.../licenciatura/sd/U2/ConceptoHilos.pdf ·...

Procesos,hilosymultihilos

Objetivos

• Describir el concepto de hilos, procesos ymulti hilos.

• Identificar los estados y control de hilos.

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”

ProcesosSepuededecirqueunprocesoesunsupervisor dehilo(s)deejecución.

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.

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

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.

Hilosyprocesos• Los hilos a menudo son conocidos o llamados procesos

ligeros.

• Loshilosdependendeunprogramapadreenloqueserefierearecursosdeejecución.

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

Hiloshijos

Estadosycontroldehilos

Estadosdeunhilo

Semántica de los estados de un hilo.

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

Estadosdeunhilo

NewRunning

Dead

Not running

Not running

Not running

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.

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.

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()

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.

HilosenJava

Estados

New

Not Running

Running

Dead

Estados

New

Dead

Running

Not Running

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.

Controldehilos

Manipulacióndelhilo

run()

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

Ø Esllamadoporelmétodostart() despuésdequeelhiloapropiadodelsistemasehayainicializado.

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

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)

Controldehilos

Suspensióndehilos

suspend()

Ø Elmétodosuspend() esdistintodestop().

Ø suspend() tomaelhiloyprovocaquesedetengasuejecuciónsindestruirelhilodesistemasubyacente.

Ø Silaejecucióndeunhilo sesuspende, puedellamarsearesume() sobreelmismohiloparalograrquevuelvaaejecutarsedenuevo.

Ø Esparecidoalsleep(time) conladiferenciaquesuspend() esportiempo indefinido.

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.

Controldehilos

Prioridadesenhilos

setPriority(int )

Ø ElmétodosetPriority() asignaalhilolaprioridad indicadaporelvalorpasadocomoparámetro.

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

Controldehilos

Prioridadesenhilos

getPriority()

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

Controldehilos

Identificacióndehilos

setName(String )

Ø Estemétodopermiteidentificaralhiloconunnombre.Deestamanerasefacilitaladepuracióndeprogramasmultihilo.

Ø ElnombreapareceráentodaslaslíneasdetrazadoquesemuestrancadavezqueelintérpreteJavaimprimeexcepcionesnocapturadas.

getName()

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

Controldehilos

Identificacióndehilos

boolean isAlive()

Retornatruesielthread seencuentraenelestadoAlive (enalgunodesussubestados),estoes,yahacomenzadoyaunnohaterminado.