В разных источниках нахожу разные определения этим терминам. Где-то было написано, что мьютекс - это по сути некий объект, связанный с каждым объектом в Джаве, и который имеет два состояния: занят и свободен. А про монитор в той же статье было сказано, что специальный механизм (блок кода), который отвечает за управления доступ к некоторому ресурсу (объекту). Мол, монитор обеспечивает доступ к ресурсу только одной нити. И всем остальным нитям приходится ждать освобождения этого ресурса. То есть этот механизм отвечает за захват нитью ресурса, работой с ним в монопольном режиме, а также за последующее освобождение нитью этого ресурса. В каких-то статьях написано, что всё наоборот (монитор - это объект, связанный с другим объектом и имеющий состояние "занят" или "свободен", а мьютекс - как раз механизм, управляющий доступом к ресурсу). У Эккеля (в переводе), например, вот что написано:
Для решения проблемы соперничества потоков фактически все многопоточные схемы синхронизируют доступ к разделяемым ресурсам. Это означает, что доступ к разделяемому ресурсу в один момент времени может получить только один поток. Чаще всего это выполняется помещением фрагмента кода в секцию блокировки так, что одновременно пройти по этому фрагменту кода может только один поток. Поскольку такое предложение блокировки дает эффект взаимного исключения, этот механизм часто называют мьютексом (MUTual Exclusion).
В Java есть встроенная поддержка для предотвращения конфликтов в виде ключевого слова synchronized. Когда поток желает выполнить фрагмент кода, охраняемый словом synchronized, он проверяет, доступен ли семафор, получает доступ к семафору, выполняет код и освобождает семафор.