首页 > 试题广场 >

公平锁与非公平锁有什么区别?

[问答题]
非公平锁和公平锁的区别
1.非公平锁,不考虑线程请求锁的顺序,谁有能力谁获取锁,性能较好,减少线程上下文切换
2.公平锁,考虑线程请求锁的顺序,讲究一个先到先得,性能较差,线程上下文切换比较多
发表于 2025-07-25 22:52:06 回复(0)
公平锁按请求顺序分配锁,保证线程先到先得;非公平锁允许插队,可能出现线程饥饿但吞吐量更高。公平锁通过队列严格维护顺序,获取时检查是否有等待队列;非公平锁直接尝试抢占锁,失败后才入队。非公平锁减少线程切换开销,性能更好但公平性差。
发表于 2025-05-20 23:04:23 回复(0)
公平锁是指线程获取资源公平锁是指每个线程公平的去获取锁,通过一个先进线程的队列,线程按顺序去竞争锁,当锁释放释放时,唤醒队列头部线程去竞争获取锁。非公平锁是线程一开始可以通过cas尝试去竞争获取锁,获取失败后则进入到队列中等待,当线程释放锁,唤醒队列中线程去获取锁,可能是随机,reentranlock可以是公平也可以是非公平锁,synchronize只有非公平锁
发表于 2025-05-13 08:51:41 回复(0)