Hi all,
I am a bit confused about the example for the "Multiple Notification Objects" in
Andrews book. The author starts out by stating
Under JDK 5 you can have all your threads obtain a lock on the same object but use different Conditions upon which they should be notified.
However the example itself (Listing 5-3. A Less CPU-Intensive reserveDvd Method), uses one ReentrantLock called "masterLock" but it also uses one additional ReentrantLock/Condition pair called "dvdLock" for each dvd !
I have re-written this example to use ONLY the masterlock Lock and multiple Conditions attached to the masterlock, one Condition for each dvd.
My "simplified" example does not track the owner but could easily be extended to do this. You can see the code and the output below.
So in my opinion, we don't really this "hand-over-hand" locking.
Please feel free to give your opinion on this.
Regards.
Here is my revised code ...
... and here the
test results