公平锁、非公平锁
2019/8/31大约 1 分钟
公平锁、非公平锁
公平锁、非公平锁是并发编程中的核心机制,它为多线程资源访问提供了安全保障。
本文介绍了不同类型公平锁、非公平锁的原理和适用场景,帮助你掌握并发控制技术。
1、概念:
公平锁:加锁前先查看是否有排队等待的线程,有的话优先处理排在前面的线程,先来先得。
公平所:线程加锁时直接尝试获取锁,获取不到就自动到队尾等待。
更多的是直接使用非公平锁:非公平锁比公平锁性能高5-10倍,因为公平锁需要在多核情况下维护一个队列,如果当前线程不是队列的第一个无法获取锁,增加了线程切换次数。
原理 : https://www.cnblogs.com/little-fly/p/10365109.html
https://www.jianshu.com/p/06340f8feb05
2、Java语言中:
公平和非公平锁的队列都基于锁内部维护的一个双向链表,表结点Node的值就是每一个请求当前锁的线程。
两者的区别:https://www.jianshu.com/p/c7d17b5c6be3