举例来讲明锁的可重入性 编程
public class UnReentrant{ 并发
Lock lock = new Lock(); spa
public void outer(){ 线程
lock.lock(); 资源
inner(); 开发
lock.unlock(); 同步
} class
public void inner(){ margin
lock.lock(); top
//do something
lock.unlock();
}
}
outer 中调用了 inner,outer 先锁住了 lock,这样 inner 就不能再获取 lock。其
实调用 outer 的线程已经获取了 lock 锁,可是不能在 inner 中重复利用已经获取
的锁资源,这种锁即称之为 不可重入可重入就意味着:线程能够进入任何一个它
已经拥有的锁所同步着的代码块。
synchronized、ReentrantLock 都是可重入的锁,可重入锁相对来讲简化了并发
编程的开发。