监视器是控制对对象的并发访问的机制。
这使您可以执行以下操作:
线程1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
线程2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
这样可以防止线程1和2同时访问受监视(同步)的部分。一个将启动,并且监视器将阻止另一个在第一个完成之前访问该区域。
这不是一个特殊的对象。它的同步机制位于类层次结构的根目录:中java.lang.Object
。
还有wait
和notify
方法也将使用对象的监视器在不同线程之间进行通信。