Java Concurrencia : Condition Object (ReentrantLock & Condition)

Hola chavos en esta ocasión les traigo un tema mas sofisticado cuando se trata de programacion concurrente, Condition Object!. Como en mis ultimas entradas, empezare con la teoría y al final les dejare el link a mi Github donde podrán ver un pequeño ejemplo de este método en acción.

Este método a diferencia de los pasados no sigue el patrón bridge, sigue el patrón Guarded Suspension. Este patrón es usado cuando se requiere que ambos, un lock y una precondicion se cumplan para ejecutar las operaciones deseadas.

Esta condición puede (y en muchos de los casos) ser compleja, para así proteger el contenido a compartir. Mientras que el hilo esta pendiente de que la condición se cumpla, su lock se libera y se "duerme", esperando a que esa condición se cumpla. Una vez que esa condición se cumple, otro hilo le notifica al hilo que se encuentra en espera que la condición se acaba de cumplir, asi que implícitamente el hilo se "despierta" y este gana el lock, durmiendo así a los demás hilos.

Para entender un poco mas esto, en términos coloquiales a este método se le conoce como el patrón de entrega de pizzas. Para entregar una pizza se necesitan 2 cosas, la pizza y el vehículo para repartir la pizza. Si uno de los 2 llegara a faltar, es imposible repartir la pizza. Así que podemos decir que nuestro lock es el vehículo repartidor:

Debemos de esperar a que un vehículo este disponible para así poder realizar la entrega de nuestra pizza. Pero que hay de nuestra condición? simple, la condición es la pizza:



Debemos de esperar a que el chef prepare la pizza idónea para el cliente adecuado. No podemos entregar una pizza de peperoni a alguien que es vegetariano!

Una vez que ya entendimos la teoría, veamos el ejemplo que prepare en mi Github, espero les sea de utilidad. Bueno chavos eso es todo lo que tengo hasta ahora, espero les haya sido de utilidad y pues por lo pronto me despido, adiós ^_^/

Comments

Popular posts from this blog

Juego de Gato Usando HTML, JavaScript y CSS

AfterEffects - Quitar el Fondo de un Video Forma 1: KeyLight

Crear un nuevo Libro de Excel con VBA ES