public class Monitor {
	private Semaphore mutex;
	
	Monitor() {
		mutex = new Semaphore(1);
	} //constructor
	
	public void enter() {
		mutex.p();
	} //enterMonitor()
	
	public void leave() {
		mutex.v();
	} //leaveNormally()
	
	public void notify(Semaphore s) {
		s.v();
	} //notify()
	
	public void wait(Semaphore s) {
		mutex.v();
		s.p();
		mutex.p();
	} //wait()
} //class Monitor
