1.公平锁
公平锁是指多个线程按照申请锁的顺序来执行获取锁,线程在队列中排队,队列中的第一个线程获取锁,其他线程处于阻塞状态;
优点:等待线程不会饿死
缺点:CPU唤起等待的线程需要一定的开销。
2.非公平锁
非公平锁指多个线程加锁的时候,直接尝试获取锁,获取到锁则直接执行(只会有一个线程获取到锁),获取不到的线程才会放到等待队列的队尾,等待执行。
优点:当线程尝试获取锁时,获取到锁了,则会直接执行,避免了CPU唤起所有线程,避免了线程唤起的开销,整体吞吐量提高。
缺点:等待队列中的线程可能会饿死或者会等待很久。
网友评论