什么是可重入性,为什么说 Synchronized 是可重入锁?

  • Post author:
  • Post category:其他



什么是可重入性,为什么说 Synchronized 是可重入锁?

可重入性是锁的一个基本要求,是为了解决自己锁死自己的情况。

一个类中的同步方法调用另一个同步方法,假如 Synchronized 不支持重入,进入 method2 方法时当前线程获得锁,method2 方法里面执行 method1 时当前线程又要去尝试获取锁,对 Synchronized 来说,可重入性是显而易见的,刚才提到,在执行 monitorenter 指令时,如果这个对象没有锁定,或者当前线程已经拥这时如果不支持重入,它就要等释放,把自己阻塞,导致自己锁死自己。    有了这个对象的锁(而不是已拥有了锁则不能继续获取),就把锁的计数器 +1,其实本质上就通过这种方式实现了可重入性。



版权声明:本文为weixin_37627441原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。