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

探索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  操作
  这里之前被阻塞的线程被唤醒了
  然后继续循环继续抢锁
  这里自然就可以抢到锁了。然后把当前节点设置为头节点。

泽连斯基要求在卡塔尔世界杯决赛前发表视频讲话遭拒据CNN12月16日报道称,乌克兰总统弗拉基米尔泽连斯基向国际足联要求在卡塔尔2022年世界杯决赛开始前发表视频讲话。然而,国际足联领导层果断拒绝泽连斯基的提议。为此,泽连斯基的办41岁苍井空近照曝光!穿针织裙身材显丰腴,皮肤依旧紧致近日,苍井空穿球衣亮相了,原来她也看了世界杯,猜一猜她会支持哪一支队伍呢?她说自己很关注梅西,也很看好法国队,她还提到,自己没有太多的时间来看世界杯,因为家里有两个孩子需要她照顾。日本最美排球女神木村纱织,退役后开咖啡店,网友已变大妈脸木村沙织(1986年8月19日),日本埼玉县八潮市出身,是日本女子排球运动员,司职主攻位置。曾效力土超豪门瓦基弗银行加拉塔萨雷队。前日本女排队长,2017年正式退役。木村沙织木村沙鸡肋还是激战?世界杯季军战今晚打响谁说站在光里的才算英雄。阿根廷和克罗地亚的半决赛开赛前,国内爆火的孤勇者在卢塞尔球场响起。也正如这句歌词所讲,赢球的梅西是英雄,遗憾败北的莫德里奇,难道不算英雄吗?在被阿根廷30领渡边谈关键三分对手去夹击我的队友了我会命中这种空位投篮直播吧12月17日讯今日NBA常规赛,篮网119116险胜猛龙,赛后渡边雄太接受了媒体采访。谈到关键三分,渡边雄太表示我们有很多人可以创造1V1的机会,所以如果我待在底角,而对手知卡塔尔世界杯克罗地亚主帅摩洛哥像四年前的克罗地亚,希望魔笛继续新华社多哈12月16日电(记者刘旸杨汀)克罗地亚队主教练达利奇16日在卡塔尔世界杯季军争夺战赛前新闻发布会上称,对手摩洛哥队非常像四年前的克罗地亚队,希望球队核心37岁的莫德里奇以T布莱恩特谈缺少浓眉时如何保持稳定我们必须在防守端保持沟通直播吧12月17日讯NBA常规赛,湖人主场126108战胜掘金。赛后湖人内线托马斯布莱恩特接受了采访。本场比赛,浓眉在感觉腿部不适后仍坚持打完了上半场,随后湖人官方宣布浓眉右脚受伤2换1!老鹰报价戴维斯,佩林卡认为交易筹码很搞笑北京时间12月17日,NBA常规赛正在如火如荼的进行之中,就在刚刚结束的一场焦点之战中,由亚特兰大老鹰队客场挑战东部垫底的夏洛特黄蜂队。老鹰队在特雷杨的带领下,以125106战胜黄行程卡纪念版疯传,合规吗?有无安全隐患?2022年12月13日0时,通信行程卡正式下线。一些有仪式感的网友赶在零点前截了个图,留作纪念。与此同时,一项名为行程卡纪念版的新型服务也随即在朋友圈流行。其依托微信小程序和微信公天选打工人电脑不离身,有努比亚100W四口氮化镓充电器搬砖更轻松以前咱们也分享过几款可以给笔记本电脑供电的便携式充电器,多数单独给笔记本电脑供电没有问题,但是如果同时在给其他设备充电,则输出功率会有点不足,解决这个问题也很简单,升级一下充电器就办公机械键盘首选,杜伽K610W机械键盘静音红轴也许更适合你作为一名项目经理,最常做的除了背锅就是开会和写文案,我比较喜欢使用功能机械键盘,经常在办公室嗒嗒嗒的声音让其他同事开始对我有意见了,但是又不能耽误汇报材料的进度,很多时候,我只能选
世界上所有的相遇都是一种ampampquot恩赐生活中,没有无缘无故的相遇。无论遇见谁,无论是早是晚,无论结局是好是坏,都一定会带给你一些东西。漫漫征途中,有人传递温暖,有人引领你前行,有人教会你成长,有人让你被爱。俗话说,锦上大地作物和人类1hr昨天,正是农历的十二节气之中的立冬。天气其实并不好,阴沉沉的,早上还下了雨,无论是街道还是地里都还保持着水迹。我站在初冬的田野里,呼吸着青草和干草堆散发的混乱气息,放在我脚下房地产史诗级救市,房价还会涨吗?不给穷人希望了?最近,央行和银保监会发布重磅救市措施,通过16条举措,全方位向房地产市场输血,被业界称之为史诗级救市。这一次救市,会给房地产市场带来怎样的影响呢?由于房地产市场持续降温,去年以来,年轻小伙为2亿财产,攀上79岁新加坡富婆警惕温情骗局!前段时间新加坡联合早报报道,被指侵占新加坡富婆4000万新币(约2亿元人民币)家产,闹到满城风雨的中国籍前导游杨寅,刑满出狱后被驱逐出境,终生不能踏入新加坡境内。这个2022年最后2轮油价调整时间已定,油价有望暴跌,重回7元2022年最后2轮油价调整时间已定,油价有望暴跌,重回7元新一轮国内成品油于(下周一)晚24时正式开启调价窗口,截止目前仅剩最后1个工作日,结合前9个工作日油价预计下调幅度,每吨汽这30个身边现象,让我感到不可思议作者水木然1在银行工作的朋友的脾气越来越差(社会资金的流转出现困难)2媒体(尤其是自媒体)上的广告越来越没有品位了(为了生存放低门槛)3高速公路上车流量,尤其是货车流量减少了(社会妩媚多情,芬芳馥郁妩媚多情,芬芳馥郁头条作者云开日初妩媚多情性感美,芬芳馥郁娇燕飞。上苍赐予仙女貌,楚楚动人如花蕊。美貌娇艳的美女子,个个妩媚多情多姿又不失性感,芬芳馥郁香气袭人,甜美的姿态如飞翔的月凉花谢,人去楼空旧时,素颜云鬓红袖,水边柳绿衫相伴,恬静温润的水墨画卷润泽了谁的眼眶,清脆悦耳的低吟打动了谁的心醉。当悲欢离合,谁满身灾难,在往事的身影中为自己寻求解脱。泪水一湿,伤痕成茧,眼里的记一次处理Dubbo多网卡注册IP错误问题场景介绍今天在docker上部署服务时,启动都很成功,但是访问时却访问失败。之前在本地启动在测试服k8s上启动都很正常,为什么同样的代码同样的docker镜像在docker上却有问印在心底的梦花记得小时候,爷爷门槛下的路边,种了棵梦花树,印象中它开着泛黄黄的花朵,隔着好远都能闻到花香,若是凑近了闻一哈会把你熏昏倒,味道很是浓烈不曾记得它长叶子的模样,记忆深处是冷冷的季节,如果有一天,你爱的人不爱你了,记住这三点,你就赢了两个人决定在一起时,想的是永远。而分开的时候,剩下的只有决绝。相信很多人在面对失败的感情时,都很难做到干脆利落,相爱的点点滴滴萦绕在心头,也不是想忘就能忘的。但感情这种事,分分合合