重入锁
重入锁ReentradeLock
情景:当一个线程调用Mutex的lock()方法获取锁之后,如果再次调用lock()方法,则线程会被自己锁阻塞,原因是Mutex在实现tryAcquire(int acquires)方法时没有考虑占有锁的线程再次获取锁的场景,而在调用tryAcquire(int acquires)方法时,返回了false,导致该线程被阻塞。
简单地说,Mutex是一个不支持重进人的锁。而synchronized关键字隐式的支持重进入,比如一个synchronized修饰的递归方法,在方法执行时,执行线程在获取了锁之后仍能连续多次地获得该锁,而不像Mutex 由于获取锁,而在下一次获取锁时出现阻塞自己的情况。
一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一个先被满足,那么这个锁是公平的,反之是不公平的。