范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

探索AQS源码的奥秘

  什么是AQS
  AQS:AbstractQueuedSynchronizer ,它是一个 抽象的同步队列器 ,这个类位于 java  .util.concurrent.locks  包下面,是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类型变量麦示持有锁的状态。
  主要是通过CLH队列实现对线程的调度。
  CLH: Craig、Landin and Hagersten队列,是一个单向链表,AQS中的队列是CLH变体的虚拟双向队列FIFO。 AQS如何实现锁
  AQS使用一个volatile的int类型的成员变量来表示同步状态,通过内置的FIFO队列来完成资源获取的排队工作将每条要去抢占资源的线程封装成一个Node节点来实现锁的分配,通过CAS完成对State值的修改。
  node   :排队获取锁的线程都会生成一个node节点存储在队列里面
  state  : 当前锁的占用状态 为1的是时候表示当前锁被占用
  head  : 指向队列的头节点,头节点是一个空节点
  tail  :指向队列的尾节点
  下面整个AQS类的继承结构
  ReentrantLock
  通过ReentrantLock通过debug来看AQS的源码
  1:创建两个线程
  通过wait变量来控制线程是否占用锁,
  通过两个t1,t2,演示对锁lock的获取过程。
  2:开始debug
  t1开始尝试获取锁,可以看到队列中empty的,没有线程在等待获取锁,此时state=0 表示当前锁没有被占用。
  在206行,尝试通过CAS获取锁。
  通过逻辑可以知道t1一定可以获取到锁的,获取成功后,把当前 exclusiveOwnerThread  设置为当前线程。t2获取锁
  同理,t1占用线程并没有释放锁,此时的state=1的,通过cas获取失败。代码进入到 acquire   方法中。
  继续看acquire方法中的逻辑
  这个if语句中有三个 方法,先看 try  Acquire   方法
  这个方法所作的工作就是尝试获取锁,大致逻辑就是 state   没有被占用,尝试获取锁,如果锁是被占用的,判断当前获取锁的线程和占有所得线程是不是同一个线程,是的话增加获取锁的计数器,如果超过最大值久抛出异常。
  这里锁是被占用的,所以返回的false。
  接下执行方法 addWaiter
  看前面的方法注释,我们也知道这个方法主要就是创建当前线程的Node的节点,同时加入队列中。
  可以看到因为当前队列是空的,只有一个t1持有锁,t2在尝试获取锁。队列是空的情况像,会执行 enq
  方法。这个方法会创建一个空的 傀儡节点 。
  这个方法的话就是把傀儡节点插入队列中,同时维护头尾指针。
  接下来就是执行 acquireQueued  这个方法了。debug进去看看。
  接下来如图;
  接下来执行的是 shouldParkAfterFailedAcquire   这个方法,这是方法是AQS的核心。
  这个参数一个是当前节点的前节点,一个是当前节点。现在节点的前节点是空的傀儡节点。
  前接节点的的 waitStatus  的值为0,所以进入了如图的方法,目的就是修改前节点的值为-1,也就是SIGNAL状态
  修改成功后,继续循环。
  这个时候 ws  变成了-1 了返回true
  接下来进入
  这个方法
  就是要当前线程阻塞在这里,安安静静的等待,等待被唤醒。
  现在就卡在这里不动了。
  那什么时候唤醒呢? 线程唤醒
  被阻塞在队列中的线程什么时候被唤醒呢?这个需要当前持有锁的线程,解锁的时候唤醒。
  获得头节点的下一个节点线程,执行 uppark  操作
  这里之前被阻塞的线程被唤醒了
  然后继续循环继续抢锁
  这里自然就可以抢到锁了。然后把当前节点设置为头节点。

江阴第一波梅花已盛开,走起来源江阴日报江阴网莺初解语里微雨如酥中春日大片正式拉开帷幕快!往!下!看!祝塘梅园位于祝塘镇环东路泽枯禅寺北侧占地将近60亩里面有3000多株梅花从2月上旬开始会有长达三个月的赏梅安顿生活还是要对时问做出科学的安排,如果不能科学地安排时间,不能把每一天的工作与生活都安排妥当,那么人生也就被荒废掉了,到头来就会一无所有。人们所有的成就皆在于对时光的珍惜,在于能够每天都不一样的青团艾草粑粑苏州20230217阴温度615,一碗热呼呼的小米粥开始崭新的一天。今天打算做非苏州版本的青团艾草粑粑。原料新鲜艾草糯米粉食用碱适量温水。新鲜的艾草,有特殊的气味,有的人认为是药味爆笑神评为什么KTV没人喝白酒?哈哈哈,神评永远都是那么给力你这修勾不是挺牛的吗,我看你还牛吗你不是让我吧公司当成自己的吗就你小子还想应聘兰州拉面你小子歪点子怪多的八级电工哪里有没有电一摸就知道了外国人少的是有原因的篮球如果不爱,请别伤害这发展旅游业,福州优劣势是什么?福州作为省会城市,也是一座有千年历史的闽都,同时也是与佛山东莞类似的新兴工业城市,最近几年以三坊七巷近代烟台山领事馆区为代表,也开始发展旅游业了。现在谈谈福州发展旅游业的优劣势优势奇遇古徽州!研学黄山十条精品线路发布大皖新闻讯2月17日,由黄山市人民政府主办,黄山市委宣传部黄山市文化和旅游局黄山市教育局歙县人民政府共同承办的2023黄山市研学旅行大会在歙县举办。黄山市正式发布研学黄山十条精品线2023快手电商38节商家大会纪要2023快手电商38节商家大会时间2023年2月16日14001515主要内容本次大会主题为春季上新,赢在开年,快手电商官方将带领商家精准把握38节增长趋势,取得确定性的生意增长。POP服装设计网冒险时间LANDLORD男装设计师品牌流行款式分析品牌介绍LANDLORD纽约品牌LANDLORD由设计师RyoheiKawanishi在2016年设立,展示了一种源于前卫设计的街头装的概视觉概念。这个中央圣马丁和帕森斯设计学院的(外代二线)纽约时装周MichaelKors品牌时装秀(外代二线)纽约时装周MichaelKors品牌时装秀2月15日,模特在美国纽约时装周上展示MichaelKors品牌的2023秋冬新款时装。新华社法新2月15日,模特在美国纽约时老君山为什么不对外国人开放老君山老君山常以云海著称,也是被称为最接近仙境的地方,但是为什么老君山为什么不对外国人开放呢,这一点可能也是大家会比较疑惑的问题,在一些说法中,它位于河南省洛阳市栾川县境内,其实是六丁六甲是如何成为神仙的?六丁六甲的来历及传说六丁六甲,来自东汉末期,是传说中的一位神仙。他曾经为东汉末期的政治局势和军事变动作出过很大贡献,后来也成为了历史上真实存在的神仙之一。今天,我们来聊聊六丁六甲的故事,了解他是如何成
预算3000元哪些手机值得买?这三款值得考虑,安兔兔110万分这段时间有哪些手机值得买?可选的手机也许太多了。正好在春节前赶上了一波新手机上市,其中很多产品在使用体验上都远超去年同期的机型,让我们有了换手机的理由。但如果你还没想好该买哪些手机聊一下MIUI14体验后的感受聊一下MIUI14体验后的感受MIUI14更新了许多的功能,说一下我感受最深的几个第一,剃刀计划确实能够卸载很多不用的系统应用,对于某些强迫症同学来说,确实很欣喜。第二光子引擎在手德尔塔克戎(deltacron)变异株XAY。2又是什么?财经新势力新春季多国检出德尔塔克戎变异株多国检出德尔塔克戎(deltacron)变异株,泰国在新冠病例中检测出德尔塔克戎XAY。2毒株从而调整了入境政策,这个变异株是什么情况?需要什么是Web3。0?下一个互联网风口一什么是Web3。0在了解web3。0之前,我们先了解一下什么是web1。0和web2。0,在web1。0时代人们成为了内容的消费者和信息的接收者,比如我们在新浪搜狐腾讯网易这四大大化焕新沧州到坊招商推介大会举行1月14日,大化焕新沧州到坊招商推介大会在园博园中的沧州坊举行。本次推介会由沧州大运河发展(集团)有限责任公司主办,沧州大运河运营管理有限公司厚几文旅产业(北京)有限公司承办。推介商品期货收盘黑色系领跌,铁矿石跌超4,沪镍跌超2金融界1月16日消息国内期货市场收盘,商品期货涨跌参半,黑色系商品领跌。铁矿石跌超4,沪镍跌超2,螺纹热卷锰硅尿素跌超1沪锡涨超3,低硫燃油涨超2,原油沪银沪锌塑料PP纸浆生猪涨超MIUI14再次更新,小米11续航得到改善,老旗舰不输新机!MIUI14于去年12月份发布以来,全网收获了一片好评,流畅度与稳定性得到大幅提升,基本不会再出现Bug卡顿掉帧等现象。只是早期版本优化可能不到位,不少小米11用户抱怨升级之后续航连iPhone都升级6GB运存,毒瘤APP还不收手?大内存安卓旗舰治它回想十年前,手机内存大小或许只是现在的几分之一,却基本没有人提及手机空间不足,而现在手机已然128GB起步,空间不足的抱怨却频频出现,之所以会出现这种情况,除了智能手机上的APP愈百强透视低位反弹超55!三生制药的前景值得期待吗?自2022年11月以来,港股市场的生物医药板块表现不俗,包括康哲医药(00867。HK)上海医药(02607。HK)赛生药业(06600。HK)在内,许多生物医药概念股的股价(前复喜获丰收!进入腊月捕鱼忙!谷城茨河泉水多,很多村民靠着家门口的泉水,在鱼塘里养起了草鱼和鲢鱼,进入腊月,村民们就开始忙活着捕鱼了。村民们说,捕鱼看上去热闹,其实比较费力也讲究技巧,首先要根据鱼塘的大小选渔网跌下神坛?第一个提出武汉封城的李兰娟,最新发声却遭质疑自疫情全面放开后,全国80的人群都受到了影响,大多数人也都已进入了阳康期,但问题在于,奥密克戎的传染速度如此之快,为何还会有少数人没有变阳?对此中国工程院院士李兰娟在1月6日的一次