本文共 940 字,大约阅读时间需要 3 分钟。
Lock 是 Java 中一个接口,包含多个实现类,如可重入锁、读锁和写锁。 其中,可重入锁是最常用的实现。Lock 的底层基于 AQS(AbstractQueuingSynchronizer)和 CAS(比较与交换)机制实现。
Lock 的核心方法包括 lock() 和 unlock()。 其中,可重入锁 ReentrantLock 有两种模式:公平锁和非公平锁。默认创建的锁是非公平锁,允许线程插队,采用先来先出的方式。
非公平锁:默认配置,线程插队可能导致其他线程饿死,适用于并发量高的场景。例如,消息队列(如 RocketMQ)中,若使用非公平锁,可能导致等待时间过长,系统不稳定。
公平锁:按先到先出的方式分配锁,线程不会饿死。例如,RocketMQ 中的 queue 包使用了公平锁,确保线程的公平抢占。
希望以上内容对你有所帮助!如有疑问,欢迎在评论区留言。
转载地址:http://sbufk.baihongyu.com/