Какой монитор называется в параллельном программировании на Java?
Когда я читаю, что «каждый объект связан с монитором», что это означает?
Это особый объект?
java
multithreading
concurrency
monitor
xdevel2000
источник
источник
Ответы:
Монитор - это механизм для управления одновременным доступом к объекту.
Это позволяет делать:
Поток 1:
Поток 2:
Это предотвращает одновременный доступ потоков 1 и 2 к отслеживаемой (синхронизированной) секции. Один из них запустится, и монитор не позволит другому получить доступ к региону до завершения первого.
Это не особый объект. Это механизм синхронизации помещен в корне иерархии классов:
java.lang.Object
.Есть также
wait
иnotify
методы , которые будут также использовать монитор объекта для связи между различными потоками.источник
Class
объектом для статических методов. Если у вас уже есть синхронизированный method1 () и вы объявляете method2 () synchronized, новые мониторы не создаются, и фактически вызов любого метода (для того же объекта) будет пытаться заблокировать тот же монитор. Это часто ловит новичков.Монитор - это объект, который имеет как блокировку, так и набор ожидания . В Java любой
Object
может служить монитором.Для подробного объяснения того, как мониторы работают в Java, я рекомендую прочитать раздел « Механика монитора » Параллельного программирования на Java (предыдущая ссылка отображает предварительный просмотр в книгах Google, и этот раздел доступен для чтения).
источник
Wakes up all threads that are waiting on this object's monitor.
о notifyall (), я получаю, что объект поддерживает (с помощью внутреннего объекта / объекта), что все потоки ждут блокировки, этот внутренний объект / объект называется монитором?источник
Язык Java и система времени выполнения поддерживают синхронизацию потоков с помощью мониторов.
Монитор связан с конкретным элементом данных (условной переменной) и действует как блокировка этих данных. Когда поток удерживает монитор для некоторого элемента данных, другие потоки блокируются и не могут проверять или изменять данные.
источник
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
Механизм для контроля доступа к объектам по одному
источник
Монитор - это конструкция синхронизации, которая позволяет потокам иметь как взаимное исключение, так и возможность ожидания (блокирования) выполнения определенного условия.
У мониторов также есть механизм для сигнализации другим потокам о том, что их условие выполнено. Это объект, который имеет как блокировку, так и набор ожидания. В Java любой объект может служить монитором.
В виртуальной машине Java каждый объект и класс логически связаны с монитором. Чтобы реализовать возможность взаимного исключения мониторов, с каждым объектом и классом связывается блокировка (иногда называемая мьютексом). В терминах операционных систем это называется семафором, мьютекс - это двоичный семафор.
Для получения дополнительной информации перейдите по ссылке
источник
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
Монитор связан с объектом или элементом данных, который запрашивается, когда элемент данных или объект вводится, является блоком синхронизации (критическая секция) и освобождается при выходе.
источник