Монитор - это механизм управления одновременным доступом к объекту.
Это позволяет вам:
Тема 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
, которые также используют монитор объекта для связи между различными потоками.