原理:
内部锁记录: 重入锁使用一个内部的锁记录来跟踪当前持有锁的线程。
计数器: 每次线程获取锁时,计数器会增加,每次释放锁时,计数器会减少。
锁状态: 当计数器为 0 时,表示锁没有被任何线程持有;当计数器大于 0 时,表示锁被当前线程持有。
公平性: 重入锁可以选择公平性,确保按照线程请求锁的顺序来释放锁,避免线程饥饿。
特性:
可重入性: 同一个线程可以多次获取同一个锁,而不会阻塞自己。
公平性: 可以选择公平性,确保线程按照请求锁的顺序来释放锁。
锁降级: 可以将写锁降级为读锁,实现更灵活的并发控制。
锁中断: 支持中断正在等待锁的线程。
锁超时: 支持超时获取锁,如果指定时间内无法获取锁,则返回 false。
锁可关闭: 支持关闭锁,关闭锁后,所有正在等待锁的线程都会被唤醒。
本文作者:whitebear
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!