Java并发学习笔记-重入机制

重入机制

//20230328 在学习并发的时候看到了重入机制,在此记录一下

概念

  • 背景:Java拥有锁机制(synchronized),这种锁是互斥锁,一个线程拿到了锁,另一个线程请求锁的时候就会阻塞,直到该锁被释放
  • 核心概念:重入是指同一个线程多次访问同一个锁的时候,是可以拿的到的,该机制避免了死锁问题;同时引入了一个计数器概念,每个锁对应着一个计数器,锁未被持有的时候,计数器为0,当有线程持有时,计数器加一,当重入时,则继续递增,只有其重归于0的时候才能被其他线程获取到

代码示例

public class Widget{
  public synchronized void doSomething(){
    ...
  }
}

public class LoggingWidget extend Widget{
  public synchronized void doSomething(){
    System.out.println(toString()+": calling doSomething");
    super.doSomething();//此处调用父类上锁方法,属于同一线程调用同一个锁,如果没有重入机制,在此处会导致死锁
  }
}

以上

posted @ 2023-03-28 15:51  醉生梦死_0423  阅读(32)  评论(0编辑  收藏  举报