当前位置: 首页 > wzjs >正文

100t空间 做网站福州百度seo代理

100t空间 做网站,福州百度seo代理,seo 网站文章一般要多少字,路由器屏蔽网站怎么做AQS内部属性 state(volatile修饰):为0是标记没有被占用,大于0时表示被其它线程或当前线程占用,对于ReentranLock,state可以大于1,表示多次重入,每次所释放时state减1,直…

AQS内部属性

state(volatile修饰):为0是标记没有被占用,大于0时表示被其它线程或当前线程占用,对于ReentranLock,state可以大于1,表示多次重入,每次所释放时state减1,直至state等于0时释放锁。

head:等待队列的头节点,head后节点为null节点,链表为是双向链表,便于查找前驱和后继节点。

tail:等待队列的尾节点。

exclusiveOwnerThread:持有锁的线程。

AQS使用双向链表的原因

  1. 当某个线程出现异常不需要竞争锁,比如线程被中断了,可以快速移除链表。
  2. 通过lock()竞争锁时,需要不断的判断当前线程的前驱节点是否是head,如果是才能成功获得锁。

ReentrantLock实现原理

ReentrantLock默认使用NonfairSync实现类,NonfairSync和FairSync继承Sync,Sync是一个抽象类。

加锁流程(lock)

加锁成功(tryAcquire)

  1. 如果state=0,通过CAS尝试将state赋值为1,同时设置exclusiveOwnerThread为当前线程。
  2. 如果state!=0,判断exclusiveOwnerThread是否为当前线程,如果是当前线程state+1。

加锁失败(acquireQueued)

  1. (addWaiter)先创建Node节点,放到等待队列尾部。如果是tail节点为null,会先创建一个Dummy节点(空节点),head和tail的引用指向Dummy节点,在创建Node节点,放到等待队列尾部。

node节点如何插入到队列尾部过程

    • 把当前线程的node的prev指向tail
    • 通过cas把node节点设置为新tail
    • 把原tail节点的next指向当前node

  1. (acquireQueued)如果创建的Node节点的前驱节点是head节点,会在尝试一次锁竞争(tryAcquire),竞争失败走3。
  2. (shouldParkAfterFailedAcquire)将前驱节点的waitStatus改为-1,并返回false,再次执行acquireQueued(改成-1的作用是:告知前驱节点有责任去唤醒下一个节点)。
  3. (parkAndCheckInterrupt)阻塞当前线程。

释放锁流程(unlock)

  1. (tryRelease)state-1,当state=0时,设置exclusiveOwnerThread为null,并返回true表示锁释放成功,否则返回false。

  1. (release)判断head!=null&&head.waitStatus!=0,则表明需要唤醒head的后继节点(unparkSuccessor)。
  2. (acquireQueued),被parkAndCheckInterrupt阻塞的线程会继续执行for循环,(tryAcquire)如果竞争成功会设置当前节点为头节点,头节点的下一个节点为null(方便GC)。
  3. (acquireQueued)如果后继节点竞争失败,继续阻塞。

ReentryLock 特性

  1. 支持可重入
  2. 支持阻塞竞争锁和非阻塞竞争锁,lock()和tryLock()
  3. 支持公平和非公平锁
http://www.dtcms.com/wzjs/230034.html

相关文章:

  • 西部数码网站管理助手c盘安装头条权重查询站长工具
  • 包装网站模板百度站长平台网站提交
  • 做微商童装网站立即优化在哪里
  • 刷数据网站怎么推广做百度推广销售怎么样
  • 西安建站网站百度图片识别搜索引擎
  • 网站做商业计划书吗网站优化排名公司
  • 网站设计数据库怎么做免费的html网站
  • 网站的背景图怎么做的营销必备十大软件
  • 微信网站建设 知乎seo如何优化关键词排名
  • 河北建筑网站关键词搜索神器
  • 网页制作与网站建设实战教程申泽seo
  • 怎么用凡科做网站千锋教育出来好找工作吗
  • 烟台商机互联做网站吗软件排名优化
  • 小公司怎么做免费网站搜索引擎优化的核心本质
  • 怎样制作微信网站链接最近一周新闻大事件
  • 青岛网站建设找润商郑州seo团队
  • 阿里云买啦域名怎么建设网站百度搜索流量查询
  • 微网站建设高端网站定制慈溪seo
  • 西安本地十家做网站建设的公司网络公司
  • 宣传手册内容模板网站关键词排名优化电话
  • 重庆网络网站建设百度推广合作
  • 茂名市电白区住房和城乡建设局网站seo门户网站优化
  • 政务网站开发合同seo工作内容和薪资
  • 南昌做网站和微信小程序的公司个人外包接单平台
  • 天津做网站优化哪家好域名停靠网页app推广大全
  • 政府网站 cms百度开户渠道商哪里找
  • aspnet做网站视频教程防疫管控优化措施
  • 做绒毛鉴定网站服务营销
  • 排名前十的网页游戏抚州seo排名
  • 京东网上商城创立时间seo对网站优化