20240513@多线程锁-公平锁和⾮公平锁
公平锁(Fair Lock)和非公平锁(Unfair Lock)是在多线程编程中常见的概念,通常用于控制对共享资源的访问。
非公平锁
非公平锁不需要排队,只要有机会就抢占。
好处是效率高,
坏处是可能存在线程饿死的现象(有线程一直获取不到锁);
ReentrantLock默认是非公平锁(入参fair是false)。
ReentrantLock lock = new ReentrantLock();
公平锁
公平锁效率低,但是阳光普照。
ReentrantLock lock = new ReentrantLock(true);
公平是因为,每次【占座】时都要询问一下(等待队列)是否有其他线程在排队,有就排队,没有就占。基本上遵循先到先得的原则。 问询导致效率低。
推荐标签:
#后端开发/java
相关卡片:
[[20240330@mysql有哪些锁?]]