Что такое монитор на 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 книгах, и этот раздел доступен для чтения).
- монитор-это концепция / механизм, который не ограничен языком Java;
- "в параллельном программировании монитор-это объект или модуль, предназначенный для безопасного использования несколькими потоками";
- как знает каждый читатель, каждый объект в Java является подклассом java.ленг.Объект. Люди java сделали java.ленг.Объект таким образом, что он имеет функции и характеристики, которые позволяют программистам Java использовать любой объект в качестве монитора. Например, каждый объект имеет очередь ожидания, очередь повторного входа и ждать и уведомлять методы, делающие его монитором;
- читать про мониторы здесь.
язык 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 каждый объект и класс логически связан с монитором. К реализуйте возможность взаимного исключения мониторов, блокировка (иногда называемая мьютексом) связана с каждым объектом и классом. Это называется семафором в терминах операционных систем, мьютекс-двоичный семафор.