Монитор отличается от Mutex, но их можно считать похожими в том смысле, что монитор построен поверх Mutex. Для ясности см. Изображение монитора на изображении внизу.
Монитор представляет собой конструкцию синхронизации, которая позволяет потокам иметь как взаимное исключение (с использованием замков), так и сотрудничество т. Е. Возможность сделать потоки ожидающими, что определенное условие будет истинным (с использованием набора ожидания).
Другими словами, наряду с данными, которые реализуют блокировку, каждый объект Java логически связан с данными, которые реализуют набор ожидания. В то время как блокировки помогают нитьм работать независимо друг от друга на общих данных, не мешая друг другу, ожидают, что этапы поддержки помогают взаимодействовать друг с другом для совместной работы в направлении общей цели, например. все ожидающие потоки будут перемещены в этот набор ожидания, и все будут уведомлены после освобождения блокировки. Этот набор ожидания помогает в создании мониторов с дополнительной помощью блокировки (mutex).
Я вы хотите, вы можете увидеть мой ответ here, которые могут или не могут иметь отношение к этому вопросу.
Вы можете найти другую соответствующую дискуссию здесь
Semaphore vs. Monitors - what's the difference?
кажется, тихо обратное (производительность мудрая): http://japgolly.blogspot.bg/2012/04/ruby-mutex-reentrancy.html – akostadinov
@akostadinov Я не знаю рубина, чтобы прокомментировать это. Даже не уверен, что код, используемый для этого теста, является надежным. Может быть, Ruby является нарушением общего заявления, которое я делаю?У Джозефа Альбахари есть [Сравнение блокирующих конструкций в C#] (http://www.albahari.com/threading/part2.aspx#_Locking), который, кажется, лучше подходит моим заявкам – Vikhram
Не заметил, что этот вопрос не является рубиновым , Странно, но я не удивлен такой странностью. Я имею в виду о различии поведения рубина во всем остальном. – akostadinov