Win a copy of Bad Programming Practices 101 (e-book) this week in the Beginning Java forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

WHy isnt there an Output?  RSS feed

 
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator


 
Saloon Keeper
Posts: 8975
168
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You have created a deadlock. When you call b.start(), you essentially tell b to hold a lock on a, and then wait for the main thread to finish before it releases the lock on a. Meanwhile, the main thread sleeps for a second, and after that it asks a to do something. However, it requires a's lock, which is held by b. So it has to wait until b is done with a, while b is waiting for the main thread to finish. Deadlock.
 
Ranch Hand
Posts: 300
Eclipse IDE Firefox Browser Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

This is classic example of deadlock where lock's are shared between multiple threads in random way without a particular order and which leads to deadlock.

to read more about deadlock in java see here http://javarevisited.blogspot.com/2010/10/what-is-deadlock-in-java-how-to-fix-it.html
 
We can walk to school together. And we can both read this tiny ad:
Why should you try IntelliJ IDEA ?
https://coderanch.com/wiki/696337/IntelliJ-IDEA
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!