Home / Java Programming / Threads :: Discussion

Discussion :: Threads

  1. Which statement is true?

  2. A.
    If only one thread is blocked in the wait method of an object, and another thread executes the modify on that same object, then the first thread immediately resumes execution.
    B.
    If a thread is blocked in the wait method of an object, and another thread executes the notify method on the same object, it is still possible that the first thread might never resume execution.
    C.
    If a thread is blocked in the wait method of an object, and another thread executes the notify method on the same object, then the first thread definitely resumes execution as a direct and sole consequence of the notify call.
    D.
    If two threads are blocked in the wait method of one object, and another thread executes the notify method on the same object, then the first thread that executed the wait call first definitely resumes execution as a direct and sole consequence of the notify call.

    View Answer

    Workspace

    Answer : Option B

    Explanation :

    Option B is correct - The notify method only wakes the thread. It does not guarantee that the thread will run.

    Option A is incorrect - just because another thread activates the modify method in A this does not mean that the thread will automatically resume execution

    Option C is incorrect - This is incorrect because as said in Answer B notify only wakes the thread but further to this once it is awake it goes back into the stack and awaits execution therefore it is not a "direct and sole consequence of the notify call"

    Option D is incorrect - The notify method wakes one waiting thread up. If there are more than one sleeping threads then the choice as to which thread to wake is made by the machine rather than you therefore you cannot guarantee that the notify'ed thread will be the first waiting thread.


Be The First To Comment