UNIDAD 3: THREADS (HILOS)

 Hola, bienvenidos a un nuevo blog.

En esta ocasión les traigo un nuevo tema que es muy importante aprender en programación y es HILOS o THREADS en ingles.

Un hilo es una secuencia de lenguajes que el procesador ejecuta.

CICLO DE VIDA DE UN THREAD.

Encapsula todo el control para el manejo y ejecución de hilos. 

Es la única forma de controlar el comportamiento de los hilos.

Métodos de la Clase:

currentThread(): Devuelve un objeto thread que representa al hilo que se esta ejecutando.

Yied(): Hace que el interprete cambie de contexto del hilo actual y el siguiente hilo ejecutable disponible.

Sleep(long): Provoca que el hilo se ponga a dormir durante un numero en milisegundos.

Métodos de Instancia:

start(): Indica que comience un hilo y se ejecutado.

run():  Constituye en el cuerpo del hilo en ejecución.

stop(): Provoca que el hilo se detenga de manera inmediata.

suspend(): Provoca que se detenga su ejecución sin destruir sistema subyacente.

resume():  Sirve para revivir un hilo suspendido.

setPriority(int): Asigna un prioridad al hilo, donde toman normalmente las prioridades definidas en la clase Thread.

New State: Un nuevo Thread inicia el ciclo de vida.

Runnable State: Es el estado de ejecución del thread 

Waiting State: Cuando un thread pasa al estado de espera, mientras otro thread se ejecuta para realizar otra tarea. 

Timed Waiting State: Especifica el tiempo de intervalo de espera, se puede establecer un tipo de thread temporizado haciéndolo dormir sleep(). 

Blocked State: Se produce cuando un thread intenta realizar una tarea que no se puede completar inmediatamente, y debe esperar hasta que la tarea se complete.

Terminate State: Se ejecuta cuando el thread ha ejecutado satisfactoriamente su tarea

SINCRONIZACION:

La sincronización puede asegurar de que cada subproceso que acceda a un objeto compartido excluya todos los demás subprocesos de hacerlo simultáneamente.

El hecho de que varios hilos compartan el mismo espacio de memoria puede causar dos problemas 

Algunos hilos necesitan esperar a otros para disponer de datos importantes.

Uso de synchronized al declarar un método:

public synchronized void metodo () 

Sincronizando todo, se pierde la ventaja de la concurrencia.

La clave es el concepto de monitor, que controla el acceso a un objeto.

Un monitor funciona implementando el concepto de bloqueo (lock).

Cuando un objeto está bloqueado por un hilo, ningún otro hilo puede obtener acceso al objeto. 

Cuando el hilo sale, el objeto está desbloqueado y está disponible para ser utilizado por otro hilo 

METODOS SYNCHRONIZED.

Join():Se utiliza para mantener la ejecución del hilo que se está ejecutando  hasta que el hilo especificado esté muerto.

SINCRONIZACION POR PARMETRO.

Es posible sincronizar por parámetro indicando mediante argumentos cuando debe ejecutarse un hilo después de otro.

BLOQUEOS.

Cuando se ocupa el bloqueo de clase, se bloquean las operaciones de los dos bloqueos de clase adquiridos anteriormente en otros hilos. 

La Clase ReentraLock utiliza dos métodos para aplicar el bloqueo y desbloqueo de un hilo, estos métodos son: 

Método lock: Bloquea un trozo de código de un programa que ejecuta un hilo.

Método UnLock: Desbloquea el trozo de código de un programa bloqueado.


BLOQUEOS CON CONDICIONES:

La interfaz Condition tiene dos métodos importantes await() que es capaz de colocar un hilo a la espera y luego tiene el método signalAll(), este método es el que informa a todos los hilos de que se ha hecho una acción de que para que todos los hilos que están a la esperan despierten. 

 CIERRES Y BLOQUEOS IMPLICITOS:

Existen métodos análogos de los métodos await() y signalAll() de la clase Object con los correspondientes métodos: wait() y notifyAll() 


















Comentarios

Entradas más populares de este blog

UNIDAD 2: EXPRESIONES REGULARES.

UNIDAD 1: INTERFAZ GRÁFICA (GUI).