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

c 做网站用什么框架百度首页的ip地址

c 做网站用什么框架,百度首页的ip地址,用canvas做网站,外企网站建设公司排名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/176607.html

相关文章:

  • 中国网站开发排名免费培训机构
  • 做网站 中介搜索引擎广告图片
  • 哪个网站做贷款推广bing搜索引擎
  • 网站建设合同要缴纳印花税吗平台推广计划
  • 网站设计深圳要联系方式吗?北京seo优化哪家好
  • 菜单网站图片素材seo管理软件
  • 无锡网站制作优化推广我们seo
  • 国内php开发的电商网站有哪些怎么给自己的网站设置关键词
  • 邓州市网站建设每日一则新闻摘抄
  • 网站做cpa推广引流域名查询ip138
  • 网页模版网站怎么申请一个网站
  • 做游戏数据分析的网站哪个好用?
  • 怎样在线做网站404做一个公司网站要多少钱
  • 克隆网站后怎么做软文网站推广
  • 东莞外贸公司建网站google搜索app下载
  • 东莞谢岗网站建设个人接app推广单去哪里接
  • 电商网站如何设计内容海南乐秀同城群软件下载
  • 网站设计用什么软件推广员是干什么的
  • 自己做的网站百度搜不到百度竞价排名商业模式
  • 网站营销网杭州10大软件开发公司
  • 怀仁有做网站的公司吗青岛网站seo分析
  • 射阳做网站的公司阿拉营销网站
  • 企业网站建设方案费用优化大师兑换码
  • 做企业网站那家好成都网站推广
  • 泉州做网站的西安百度提升优化
  • 建站系统加盟谷歌推广哪家好
  • 网站的整合搜索引擎推广
  • cocos creator做网站江苏seo技术教程
  • 动态网站开发基础公司网络推广服务
  • 郑州专业做网站seo外链自动群发工具