在java中监视器支持两种线程:互斥和协作。Java虚拟机通过对象锁来实现互斥,允许多个线程在同一个共亨数据上独立而互不干扰地工作。协作则是通过Object类的wait方法和notify方法来实现,允许多个线程为了同一个目标而共同工作。
监视器本人认为其就是jvm对线程访问临界资料相应的管理机制,实现线程之间的正常工作。
在java虚拟机中,每一个对象和类在逻辑上都是和一个监视器相关联的。对于对象来说,相关联的监视器监视其对象变量;对于类来说,相关联的监视器监视该类的类变量。我们所说的获得一个对象的对象锁其实就是获得该对象的监视器。对于获得类的锁也是通过对象锁来实现的,只是这里要说明的是,这个对象锁是指这个类的Class类的对象锁。