I get confused on the synchronized method. Look at this code below:
public void waitOne() throws InterruptedException
{
synchronized (monitor)
{
while (!signaled)
{
monitor.wait();
}
}
}
public void set()
{
synchronized (monitor)
{
signaled = true;
monitor.notifyAll();
}
}
Now, from what I understand, synchronized means only 1 thread can access the code inside. If waitOne() is called by main thread and set() is called by child thread, then (from what I understand) it will create deadlock.
This is because main thread never exit synchronized (monitor) because of while (!signaled) { monitor.wait(); }
and therefore calling set() from child thread will never able to get into synchronized (monitor)?
Am I right? Or did I miss something? The full code is in here: What is java's equivalent of ManualResetEvent?
Thanks