可重入锁
什么是可重入锁
在我刚刚接触的时候,很多书上,博客上都会看到可重入锁这个东东,恕小弟愚昧,一开始对着可重入锁并不知道到底是什么,然后就查查资料,查漏补缺。
可重入锁:可重复可递归调用的锁。(ps:也就是说在外层使用锁之后,在内层也可以使用外层的锁,并且不会发生死锁)ReentrantLock和synchronized都是可重入锁
重入锁例子:methodA首先拿到Test的锁,再执行methodB,methodB也是拿Test的锁,并且不会发生死锁。
public class Reentrant {
public static void main(String[] args) {
Test test=new Test();
for(int i=0;i<20;i++){
new Thread(test).start();
}
}
}
class Test implements Runnable{
public synchronized void methodA(){
System.out.println("methodA:"+Thread.currentThread().getName());
methodB();
}
public synchronized void methodB(){
System.out.println("methodB:"+Thread.currentThread().getName());
}
@Override
public void run() {
methodA();
}
}