公平锁和非公平锁
公平锁的实现:谁等待时间长,谁先获取锁
非公平锁:随机获取的过程,谁运气好,cpu时间片论询到那个线程,谁先获取锁
不可重入锁和可重入锁
不可重入锁就是当前线程执行某个方法已知获取了该锁,那么在方法中尝试再次获取锁时就获取不到被阻塞,可重入锁恰好与之相反,不会被阻塞
Reentrant lock提供了无条件的,可轮询的,定时的,以及可中断的锁获取操作而且加锁和解锁都是显式的
底层实现
try Acquire(ary)–>获取独占锁,获取成功直接返回,获取成功直接返回,获取不成功,调用add waiter将当前线程包装为一个节点,插入到队列,返回节点到accquireQuened方法中,尝试获取节点