公平锁和非公平锁并发
是什么app
公平锁就是先来后到、非公平锁就是容许加塞,Lock lock = new ReentrantLock(Boolean fair);
默认非公平。高并发
**==公平锁==**是指多个线程按照申请锁的顺序来获取锁,相似排队打饭。ui
**==非公平锁==**是指多个线程获取锁的顺序并非按照申请锁的顺序,有可能后申请的线程优先获取锁,在高并发的状况下,有可能会形成优先级反转或者节现象。线程
二者区别code
公平锁:Threads acquire a fair lock in the order in which they requested it队列
公平锁,就是很公平,在并发环境中,每一个线程在获取锁时,会先查看此锁维护的等待队列,若是为空,或者当前线程就是等待队列的第一个,就占有锁,不然就会加入到等待队列中,之后会按照FIFO的规则从队列中取到本身。it
非公平锁:a nonfair lock permits barging: threads requesting a lock can jump ahead of the queue of waiting threads if the lock happens to be available when it is requested.thread
非公平锁比较粗鲁,上来就直接尝试占有额,若是尝试失败,就再采用相似公平锁那种方式。request