Está en la página 1de 13

Hilos

Estructura general
Propiedades de un hilo
(subclase de Thread)
Id - getId()
Es único, de sólo lectura, es asignado por el SO o por JRE
Nombre - setName(String n) / getName()
Es posible asignarlo y puede ser el mismo para varios hilos
Prioridad - setPriority() / getPriority()
Hace que se le dé más/menos/normal atención al proceso. Toma el valor:
MAX_PRIORITY, MIN_PRIORITY o NORM_PRIORITY, que son constantes de la
clase Thread
Estado de un hilo
Nuevo: Creado con la instrucción new
Listo: En espera de ser ejecutado se llamó start()
Bloqueado: Espera un recurso compartido
Esperando: Hilo inactivo esperando una señal de notificación (se usó wait() o
sleep() )
En interrupción: Recibió señal de interrupción
Terminado: El hilo terminó su tarea o fue terminado por el usuario
Muerto: El hilo está en “abrazo mortal” / punto muerto
Poner hilo en espera – sleep(int x)
Detiene la ejecución del hilo durante el número indicado de milisegundos
Modo de hacer que el microprocesador de tiempo a otros hilos para ejecutarse
Puede usarse para hacer que el programa cumpla con restricicones de tiempo
El tiempo de espera no es preciso porque se encuentra limitado por las
funciones provistas por el Sistema operativo
Esta espera puede ser terminada mediante una señal de interrupción
Interrupción
Señal enviada a un hilo para que detenga sus acciones y realice
otras.
El programador decide el comportamiento del hilo cuando recibe
esta señal, normalmente se usa para terminar el hilo.
Manejando la interrupción
Otra forma
Manejo generando una excepción
Enviando la señal
El mecanismo de interrupciones se implementa mediante una
bandera interna, el “estado de interrupción”
El método interrupt() de un hilo, enciende esta bandera.
Al verificar el estado de esta bandera mediante el método estático
Thread.interrupted() el estado de la bandera se inicializa.
El método no estático isInterrupted() se usa para que un hilo
consulte el estado de otro y no modifica la bandera.
Asociar hilos – join()
Cuando un hilo “a” es asociado a otro hilo “b” mediante el método
join(), el hilo “a” esperará a que “b” termine su ejecución, para
poder terminar.
Pone en espera al hilo actual hasta que el hilo en el cual el método
es llamado haya terminado.
Puede generar una InterruptedException.
Creando e iniciando un hilo
Referencias
Documentación clase Thread (Oracle)
Documentación Oracle (Interrupciones)

También podría gustarte