Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Parent Thread gets the same object lock has child threads? Confused!!

 
V Pinto
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 32
IntelliJ IDE Java Scala
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic