美文网首页
锁的可重入性Reentrancy理解

锁的可重入性Reentrancy理解

作者: Mr_Editor | 来源:发表于2020-06-30 14:41 被阅读0次
  • 锁争用

当一个线程请求其他线程已经占有的锁时,请求线程将被阻塞。synchronized是reentrancy lock ,当线程在试图获得它自己占有的锁时,请求会成功。

  • 可重入性

reentrancy 可重入意味着在请求锁时是基于“每线程(per-thread)”,而不是基于“每调用(per-invocation)”。

public class ReentrancyDemo{
  public synchronized void test1(){
    //.....业务代码
    test2();      //方法test2可执行,如果synchronized 不可重入,会产生死锁
  }
  public synchronized void test2(){
    //...业务代码
  }

}
  • 重入性实现原理

reentrancy 的实现是通过为每个锁关联一个请求计数器(acquisition count)和一个占有它的线程。计数器为0时,认为锁是未被占有的。线程请求一个未被占有的锁时,JVM将记录锁的占有者(占有线程),并将请求计数设置为1。如果同一线程再次请求这个锁,计数将递增;每次占用线程退出同步块,计数器值将递减,直到计数器达到0时,锁被释放。

相关文章

  • 锁的可重入性Reentrancy理解

    锁争用 当一个线程请求其他线程已经占有的锁时,请求线程将被阻塞。synchronized是reentrancy l...

  • ReenTrantLock可重入锁(和synchronized的

    ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTr...

  • ReentrantLock 源码分析

    锁的基本概念 可重入锁 Reentrant 就是可重入的意思,如果锁具备可重入性,则称作为可重入锁。像synchr...

  • J.U.C-AQS-ReentrantLock

    ReentrantLock(可重入锁)和synchronized区别 可重入性 锁的实现(ReentrantLoc...

  • Java 可重入锁 公平锁 读写锁

    1.可重入锁 如果锁具备可重入性,则称作为可重入锁。 像synchronized和ReentrantLock都是可...

  • Java中的各种锁

    一个线程中的多个流程能不能获取同一把锁:可重入锁和非可重入锁 可重入锁 可重入性:表明了锁的分配机制,是基于线程的...

  • Java温故而知新之Lock与Synchronized

    两者比较: 相关概念解析 可重入锁如果锁具备可重入性,则称作为可重入锁。假设方法A需要获取锁,方法B也需要获取锁,...

  • 各种锁的概念

    锁的概念 可重入不可重入公平锁非公平锁锁中断通过一个故事理解可重入锁的机制 - 小勇DW3 - 博客园[https...

  • 锁的可重入性

    方法getHoldCount()的作用是查询当前线程保持此锁定的个数。 方法getQueueLength()的作用...

  • Java并发编程30道面试题及答案

    1、什么是可重入锁? 举例来说明锁的可重入性: outer中调用了inner,outer先锁住了lock,这样in...

网友评论

      本文标题:锁的可重入性Reentrancy理解

      本文链接:https://www.haomeiwen.com/subject/uakxqktx.html