ReentrantLock
可重入锁,使用效果上和synchronized类似
ReentrantLock lock=new ReentrantLock();
lock.lock();
try{
//...
}
finally{
lock.unlock();
}
优势
①加锁时有两种方式lock,tryLock
②提供了公平锁的实现(默认情况下是非公平锁
③提供了更强大的等待通知机制,搭配Condition类实现等待通知
但是ReentrantLock使用更复杂,尤其容易忘记解锁,加锁时还是首选synchronized(背后有一系列优化手段)