解释
A reentrant mutual exclusion Lock with the same basic behavior and semantics as the implicit monitor lock accessed using synchronized methods and statements, but with extended capabilities. 可重入的互斥锁,基本功能和synchronized相同,但是具有扩展性
原理分析
先从ReentrantLock的源代码看起,仅列出核心的代码,又出现了常见的AbstractQueuedSynchronizer
public class ReentrantLock implements Lock, java.io.Serializable{
private final Sync sync;
abstract static class Sync extends AbstractQueuedSynchronizer {
}
// 非公平锁
static final class NonfairSync extends Sync{
}
// 公平锁
static final class FairSync extends Sync{
}
// 默认是非公平锁
public ReentrantLock() {
sync = new NonfairSync();
}
//
public Condition newCondition() {
return sync.newCondition();
}
//获取锁
public void lock() {
sync.lock();
}
// 释放锁
public void unlock() {
sync.release(1);
}
}