This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I believe I understand how join() normally works: Basically when the calling thread A calls B.join(), it goes into the waiting state until thread B ends, after which thread A becomes runnable again. However, I'm looking for clarification on what happens if join() is called after thread B is already dead (assuming the thread object still exists).
In practice, I imagine that thread A will appear to continue running, since the condition for continuing (i.e. thread B exiting) has already been satisfied. However I'm not sure whether thread A does stop executing briefly (for the few clock cycles necessary for the scheduler to make it runnable again), or if join() basically becomes a no-op when its thread is dead and thus thread A simply continues in the running state.
So, to use the SCJP exam terminology, would you say that the call to join() is "guaranteed to cause the calling thread to stop executing", even given a pathological (but not impossible) case like this? If I see such a statement on the exam, should I consider it to be true or false?