本帖最后由 蓝色骨头 于 2013-4-9 21:56 编辑
1 obj就是任意一个对象
2 在JVM中,每个对象和类在逻辑上都是和一个监视器相关联的
为了实现监视器的排他性监视能力,JVM为每一个对象和类都关联一个锁
监视器好比一做建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据,进入这个建筑叫做"进入监视器",进入建筑中的那个特别的房间叫做"获得监视器",占据房间叫做"持有监视器",离开房间叫做"释放监视器",离开建筑叫做"退出监视器".
监视器:monitor
锁:lock(JVM里只有一种独占方式的lock)
进入监视器:entermonitor
离开/释放监视器:leavemonitor
(entermonitor和leavemonitor是JVM的指令)
拥有者:owner
在JVM里,monitor就是实现lock的方式。
entermonitor就是获得某个对象的lock(owner是当前线程)
leavemonitor就是释放某个对象的lock
锁涉及到原子操作,比如两个线程都在获取一个锁,只能有一个得到锁,这在计算机里面只能是一条指令(单独一条的指令不能被中断) |