公平锁 VS 非公平锁
2018-11-25 本文已影响0人
萝灏
公平锁: 线程通过排队的方式来获取锁,没有获取到锁的线程以阻塞的状态等待,吞吐量不如非公平锁,但是线程不会被饿死,CPU需要唤起的线程比非公平锁多。
非公平锁:线程会尝试获取锁,如果获取失败了才会去排队,可能导致队列中的线程被饿死,在直接获取锁的情况下CPU需要唤起的线程比公平锁少,否则与公平锁一样。
公平锁就是通过同步队列来实现多个线程按照申请锁的顺序来获取锁,从而实现公平的特性。非公平锁加锁时不考虑排队等待问题,直接尝试获取锁,所以存在后申请却先获得锁的情况。