卡片分享:多线程锁-公平锁和⾮公平锁

47 阅读1分钟

20240513@多线程锁-公平锁和⾮公平锁

公平锁(Fair Lock)和非公平锁(Unfair Lock)是在多线程编程中常见的概念,通常用于控制对共享资源的访问。

非公平锁

非公平锁不需要排队,只要有机会就抢占。 好处是效率高, 坏处是可能存在线程饿死的现象(有线程一直获取不到锁); ReentrantLock默认是非公平锁(入参fair是false)。

ReentrantLock lock = new ReentrantLock();

公平锁

公平锁效率低,但是阳光普照。

ReentrantLock lock = new ReentrantLock(true);

公平是因为,每次【占座】时都要询问一下(等待队列)是否有其他线程在排队,有就排队,没有就占。基本上遵循先到先得的原则。 问询导致效率低。

推荐标签:

#后端开发/java

相关卡片:

[[20240330@mysql有哪些锁?]]