File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes Parent Thread gets the same object lock has child threads? Confused!! Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Parent Thread gets the same object lock has child threads? Confused!!" Watch "Parent Thread gets the same object lock has child threads? Confused!!" New topic
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!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Parent Thread gets the same object lock has child threads? Confused!!