Hago que ande bien.
El otro no andaba. Ahora cambia la logica, en lugar de agarrar de a un palito, espera a tener
ambos palitos libres antes de comenzar pasar el lock. De esperar a 1 a la vez, se daba la posibilidad
de bloqueo.
Primer version con monitores.
Implementado en Java por simplicidad en el uso de monitores. Segun entiendo
Object tiene el soporte de Monitores "simple" en Object (implementa wait, notify
y notifyAll). Hay una clase Monitor (no pude encontrar en que paquete) que soporta
Conditions y quedaria mas pulenta, pero para empezar creo que seria esto nomas.
La ventaja de utilizar Conditions, es que el Wait se hace sobre el condition y cuando
se libera un palito se despierta solo al thread que lo esta esperando siendo
"mas eficiente".
Si logro completar el ejemplo mas pulenta lo subo.