After Henrry and Nick's comments, I can understand the idea perfectly. A lot of Thanks to both!
I take the idea:
...when the thread job finishes its run method "dies"; once the thread is dead all the locks get released automatically
I take this idea despite I don't know where it happen in the sources!
Concerning the comment's Henrry.. I read the API Thread, in special this piece about join() method:
This implementation uses a loop of this.wait calls conditioned on this.isAlive. As a thread terminates the this.notifyAll method is invoked. It is recommended that applications not use wait, notify, or notifyAll on Thread instances.
But, What role play the join() method in this example? There isn't join() method here, or I am not seeing it!