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.
Top Related