公平锁和非公平锁的区别

公平锁源码: alt

alt

非公平锁的源码:

alt

为了看这个tryacquire:

alt

第一:非公平锁获取锁的方式,如果资源是可用的,那么非公平锁上来就先试着cas改变资源的占用;失败了就调用acquire;但是公平锁不会抢着获取;

第二个:在tryAcquire尝试获得资源的时候,产生差异;非公平锁尝试获得资源的可用,使用cas尝试;但是公平锁会先判断队列里面有没有其他线程;没有再尝试获得其他线程;有人就直接排队

非公平锁相比公平锁会多两次机会去抢锁;

优缺点:

非公平锁:效率低,即使队列里面有线程,那么也有可能抢到;

公平锁:效率低,但是能保证线程执行的顺序;因为他不会产生争抢;

全部评论

相关推荐

祈求顺利毕业😁:简历很好了,多投吧牛油😂。主要是环境不好,大家也卷
点赞 评论 收藏
转发
OPSL:钱确实给的多,但是追责这一点比较迷惑…3个月具体如何计算呢?出勤天数30*3吗?还是21*3呢?万一中间学校有安排怎么办呢?这个得多问一问呀
点赞 评论 收藏
转发
美团 客服平台 薪资应该是后端算高的了,我们姑且称为nk了,给3w签字费
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务