What's a monitor in Java?
concurrency, java, monitor, multithreading
Solution
A monitor is mechanism to control concurrent access to an object.
This allows you to do:
Thread 1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
Thread 2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
This prevents Threads 1 and 2 accessing the monitored (synchronized) section at the same time. One will start, and monitor will prevent the other from accessing the region before the first one finishes.
It's not a special object. It's synchronization mechanism placed at class hierarchy root: `java.lang.Object`.
There are also `wait` and `notify` methods that will also use object's monitor to communication among different threads.
Problem
What's a monitor referred to in concurrent programming in Java? When I read that "every object has associated a monitor" what does it meaning? Is it a special object?