本文最后更新于46 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
重入:任意线程能获取锁之后能再次获得该锁而不会被锁阻塞
ReenTrantLock实现了Lock接口,公平锁与非公平锁的底层区别在于,实现公平锁的类(FairSync类)与实现非公平锁的类(NonfairSync类)中,实现非公平锁的类多了个hasQueuedPredecessors()方法,会判断同步队列中当前节点是否有前驱节点,如果返回true则表示有线程比当前线程更早请求获取锁,因此需要等待前驱线程获取并释放锁之后才能继续获取锁(ReenTrantLock默认是非公平锁,可以通过传递参数确定是公平锁还是非公平锁)