公平锁和非公平锁的不同是发生在一个新的线程抢占一个锁的情况下。
1.对于非公平锁,当一个新的线程想要得到一个锁,而这时锁恰好没有被别的线程占有,那么这时候这个新的线程就可以无视其他线程在等待队列中的排队,而直接获取这个锁,而且不用先加入等待队列。
2,公平锁,就是一个新的线程想要得到一个锁,这时候不论锁是否已经被占有了,都要先把自己加到等待队列中,然后等队列前面的线程都处理完以后,自己才能得到锁。
注意:对于已经加入到等待队列中的线程,要依次获取锁,不能越过前驱节点中的线程,去获取锁。
公平锁和非公平锁的不同是发生在一个新的线程抢占一个锁的情况下。
1.对于非公平锁,当一个新的线程想要得到一个锁,而这时锁恰好没有被别的线程占有,那么这时候这个新的线程就可以无视其他线程在等待队列中的排队,而直接获取这个锁,而且不用先加入等待队列。
2,公平锁,就是一个新的线程想要得到一个锁,这时候不论锁是否已经被占有了,都要先把自己加到等待队列中,然后等队列前面的线程都处理完以后,自己才能得到锁。
注意:对于已经加入到等待队列中的线程,要依次获取锁,不能越过前驱节点中的线程,去获取锁。