Что такое монитор на Java?

Что такое монитор, упомянутый в параллельном программировании на Java?

когда я читаю ,что" каждый объект связан с монитором", что это значит?

Это специальный объект?

7 ответов


монитор-это механизм управления параллельным доступом к объекту.

Это позволяет делать:

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


монитор-это объект, который обладает обоими замок и a wait значение. В Java, любое Object может служить в качестве монитора.

для подробного объяснения того, как мониторы работают на Java, я рекомендую прочитать Монитор Механики на параллельное программирование на Java (предыдущая ссылка отображает предварительный просмотр в Google книгах, и этот раздел доступен для чтения).


  1. монитор-это концепция / механизм, который не ограничен языком Java;
  2. "в параллельном программировании монитор-это объект или модуль, предназначенный для безопасного использования несколькими потоками";
  3. как знает каждый читатель, каждый объект в Java является подклассом java.ленг.Объект. Люди java сделали java.ленг.Объект таким образом, что он имеет функции и характеристики, которые позволяют программистам Java использовать любой объект в качестве монитора. Например, каждый объект имеет очередь ожидания, очередь повторного входа и ждать и уведомлять методы, делающие его монитором;
  4. читать про мониторы здесь.

язык Java и система выполнения поддерживают синхронизацию потоков с помощью мониторов.
Монитор связан с определенным элементом данных (переменной условия) и функционирует как блокировка этих данных. Когда поток содержит монитор для какого-либо элемента данных, другие потоки блокируются и не могут проверять или изменять данные.


http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308

A для управления доступом к объектам по одному


http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html

монитор связан с объектом или элементом данных, который приобретается, когда элемент данных или объект вводится, является блоком синхронизации(критический раздел) и освобождается, когда выход.


Monitor-это конструкция синхронизации, которая позволяет потокам иметь как взаимное исключение, так и возможность ждать (блокировать), пока определенное условие станет истинным.

мониторы также имеют механизм для сигнализации других потоков, что их условие было выполнено. Это сущность, которая обладает как блокировкой, так и набором ожидания. В Java любой объект может служить монитором.

в виртуальной машине Java каждый объект и класс логически связан с монитором. К реализуйте возможность взаимного исключения мониторов, блокировка (иногда называемая мьютексом) связана с каждым объектом и классом. Это называется семафором в терминах операционных систем, мьютекс-двоичный семафор.

для получения дополнительной информации, проверьте ссылку