Entering/exiting monitors trigger a happens-before barrier like accessing a volatile variable but they also trigger mutual exclusion locking. A mutual exclusion (or mutex) ensures that if more than one thread attempts to cross the barrier one thread may be locked out until the other releases the mutex.
volatile variables have the happens-before feature but without any locking.