Java Programming - Threads - Discussion

6. 

Which statement is true?

[A]. The notifyAll() method must be called from a synchronized context.
[B]. To call wait(), an object must own the lock on the thread.
[C]. The notify() method is defined in class java.lang.Thread.
[D]. The notify() method causes a thread to immediately release its locks.

Answer: Option A

Explanation:

Option A is correct because the notifyAll() method (along with wait() and notify()) must always be called from within a synchronized context.

Option B is incorrect because to call wait(), the thread must own the lock on the object that wait() is being invoked on, not the other way around.

Option C is wrong because notify() is defined in java.lang.Object.

Option D is wrong because notify() will not cause a thread to release its locks. The thread can only release its locks by exiting the synchronized code.


Alexander Monakhov said: (Sep 9, 2010)  
'notifyAll() must be called in synchronized context' is necessary but not sufficient. the thread must hold the lock on the call site.

Raj said: (Jun 18, 2012)  
If all thread performing different task then there is no need to synchronized.

Jaly said: (Dec 4, 2018)  
If all thread performing different task then there is no need to synchronized.

Nikhil said: (Jul 11, 2021)  
@All.

When one thread is completely executed then another threads get notifications like wait() and notify() i.e notifyAll() to all thread.

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.