| Author |
Parent Thread gets the same object lock has child threads? Confused!!
|
V Pinto
Greenhorn
Joined: Aug 06, 2011
Posts: 4
|
|
Hi guys,
I have the following code:
When I run this i get the following output
On lines 4 and 5 of the output the jvm is telling me that both the main thread and Thread 8 have the lock over the hash hashtable object?
How can two different threads have the lock on a same syncronized object??? I'm lost here.... Is it because thread 8 (and 9) were started by the Main thread (are child threads of main thread)?
Regards
|
 |
Alexander Kober
Ranch Hand
Joined: Aug 05, 2011
Posts: 32
|
|
|
The method Thread.holdsLock(Object) is static. That means it is a method associated with the class Thread that returns whether the current Thread is holding the lock. Unfortunately, java allows accessing static members via concrete instances (this is, however, discouraged by most IDEs and best practice guides). 'mainT.holdsLock(hash)' effectively resolves to 'Thread.holdsLock(hash)' - admittedly this is rather ugly and intuitive.
|
 |
V Pinto
Greenhorn
Joined: Aug 06, 2011
Posts: 4
|
|
I totally missed that holdsLock() is a static method, so basically holdLock always refers to current Thread executing the add method and not to the main Thread as I was aiming for.
Thanks for the reply!
|
 |
 |
|
|
subject: Parent Thread gets the same object lock has child threads? Confused!!
|
|
|