前言
每日一题专栏
公平锁和非公平锁有什么区别
公平锁
公平锁:线程按照申请的顺序获取到所,申请的线程进入一个队列去排队,永远都是队里第一位获取到锁。
优点:所有的线程都可以获取到锁资源,不会在队列中拿不到资源
缺点:吞吐量下降,除了队列第一个线程,其他线程会进行阻塞,唤醒阻塞线程开销很大
非公平锁
非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。
优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高点,CPU也不必唤醒所有线程,会减少唤起线程的数量。
缺点:可能导致队列中间的线程一直获取不到锁或者长时间获取不到锁,导致饿死。
网友评论