java锁的知识点

可重入锁(递归锁)

以synchronized为例:

  1. why?
    如果synchronized是不可重入的, 那么会经常发生死锁. 为了避免死锁的发生, synchronized是可重入的.
  2. what?
    一个类中存在两个synchronized修饰的方法,在 A方法中调用B方法,当B方法执行完返回A方法的时候,无需重新获取锁(this对象), 称为锁具有可重入性. 除了synchronized, 常见的还有ReentrantLock锁.
  3. how?
    每个锁对象关联一个计数器, 当计数器为0的时候, 其他线程可以获取锁对象. 当计数器不为0时, 其他线程阻塞. 持有锁对象的线程, 每获取一次锁对象, 计数器加1, 每退出同步块释放锁对象一次, 计数器减1. 以此来实现可重入.

未完待续

你可能感兴趣的:(java,java,可重入锁,synchronized)