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();//此处调用父类上锁方法,属于同一线程调用同一个锁,如果没有重入机制,在此处会导致死锁
}
}
以上