自学内容网 自学内容网

java八股-AQS,Reentrantlock

什么是AQS?

难度:★★★☆☆
考频:★★★☆☆
在这里插入图片描述
在这里插入图片描述
注意这个队列是双向队列,每次有线程释放锁了之后,会有下一个线程来,以及队列头元素,如果设置的是公平锁,那么是等了很久的头元素先获取锁,另外来的现成只能到AQS尾部排队!
如果设置的是非公平锁,那么head元素会和来的线程争夺锁,head往往是等了比较久的元素,如果是‘后来先上岸’的规则,那么显然是做坏规矩,不公平的,称之为非公平锁!

ReentrantLock的实现原理

难度:★★★★☆
考频:★★★☆☆
ReentrantLock基于AQS实现
在这里插入图片描述

Reentrantlock的构造方法,默认构造函数是非公平锁,传入了True就是公平锁
在这里插入图片描述
Reentrantlock内部跟上面提到的AQS也类似,有state,head,tail,和exclusiveOwnerThread,exclusiveOwnerThread表示当前占有锁的线程

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_46028606/article/details/143807614

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!