重入锁
重入锁ReentradeLock
情景:当一个线程调用Mutex的lock()方法获取锁之后,如果再次调用lock()方法,则线程会被自己锁阻塞,原因是Mutex在实现tryAcquire(int acquires)方法时没有考虑占有锁的线程再次获取锁的场景,而在调用tryAcquire(int acquires)方法时,返回了false,导致该线程被阻塞。
简单地说,Mutex是一个不支持重进人的锁。而synchronized关键字隐式的支持重进入,比如一个synchronized修饰的递归方法,在方法执行时,执行线程在获取了锁之后仍能连续多次地获得该锁,而不像Mutex 由于获取锁,而在下一次获取锁时出现阻塞自己的情况。
一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一个先被满足,那么这个锁是公平的,反之是不公平的。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步