Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Q9 page765, Threads : another possibility ?

 
Rahul Sudip Bose
Ranch Hand
Posts: 637
Eclipse IDE Firefox Browser Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Here is the question :

Given:



This is the answer : G. An exception is thrown at runtime
And the book says why : G is correct. The code does not acquire a lock on t before calling t.wait(), so it throws an IllegalMonitorStateException. The method is synchronized, but it's not synchronized on t so the exception will be thrown. If the wait were placed inside a synchronized(t) block, then the answer would have been D.

Even if we make the above correction, is the below possible ?
The run() method of t contains nothing, so it can probably complete in a nano-second. Assuming that the jvm decides to move it from runnable to running immediately after start() ,
it might just complete before main can print X. Then we are trying to call wait on a dead thread...could that cause an exception ? If there is some misconception , please point it out.

regards
rb
 
Deepak Bala
Bartender
Posts: 6663
5
Firefox Browser Linux MyEclipse IDE
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Then we are trying to call wait on a dead thread...


You wait on an Object which may or may not be a thread. So its "running" state is not up for questioning.

could that cause an exception ?


What happened when you tried ? You can always join() and then wait on the thread.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic