ReentrantLock是一个基于AQS的可重入的互斥锁,
公平锁将确保等待时间最长的线程优先获取锁,将会使整体的吞吐量下降
非公平锁将不能确定哪一个线程将获取锁,可能会导致某些线程饥饿。
ReentrantLock基本使用方式:
public class ReentrantLockTest {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void doSomething() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock();
}
}
}