当一个线程持有锁时,JVM会记录下的锁的持有者,并讲获取锁的的记录值为1,当线程再次获取这个锁就变为2.退出锁就会递减。
为什么要这种机制?
如例子程序调用super.dosomething(); 永远无法获得父类加的锁。造成死锁
public class Test_1 {
public synchronized void dosomething()
{
}
}
class LoggingWidget extends Test_1
{
@Override
public synchronized void dosomething() {
super.dosomething();
}
}