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

做企业网站要注意什么网站关键词优化软件效果

做企业网站要注意什么,网站关键词优化软件效果,网站仿站工具,建网站找外包公司靠谱吗AQS 简介 AQS(全称AbstractQueuedSynchronizer)即抽象同步队列,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。 由类图可以看到,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素&#xff0…

AQS 简介

AQS(全称AbstractQueuedSynchronizer)即抽象同步队列,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。

在这里插入图片描述

由类图可以看到,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素,队列元素的类型为Node。

  • 其中Node中的thread变量用来存放进入AQS队列里面的线程。

    • prev记录当前节点的前驱节点

    • next记录当前节点的后继节点

  • Node节点内部的SHARED用来标记该线程是获取共享资源时被阻塞挂起后放入AQS队列的。

  • EXCLUSIVE用来标记线程是获取独占资源时被挂起后放入AQS队列的。

  • waitStatus记录当前线程等待状态,可以为CANCELLED(线程被取消了)、SIGNAL(线程需要被唤醒)、CONDITION(线程在条件队列里面等待)、PROPAGATE(释放共享资源时需要通知其他节点)。

在AQS中维持了一个单一的状态信息state,可以通过getState、setState、compareAndSetState函数修改其值。对于ReentrantLock的实现来说,state可以用来表示当前线程获取锁的可重入次数。

AQS 实现原理

AQS 依赖内部的同步队列实现,也就是FIFO双向队列,负责管理着线程同步时所有被阻塞的线程。

AQS队列内部维护的是一个双向链表,这种结构每个数据都有两个指针,分别指向当前节点的前驱节点和后继节点。当线程抢占锁失败的时候,会把当前线程封装成Node加入到AQS中去。

场景一:线程抢占锁失败时,AQS 的变化

1.AQS 的 head,tail分别是同步队列的头节点和尾节点,默认为 null。
在这里插入图片描述

2.当第一个线程抢夺锁失败,同步队列会先初始化,随后线程会被封装成Node节点追加到AQS队列中。假设当前独占锁的线程为ThreadA,抢占锁失败的线程为ThreadB。

  • 同步队列初始化,首先会在队列中添加一个空Node,这个节点中的thread=null,代表当前获取锁成功的线程。随后,AQS的head和tail会同时指向这个节点。
    在这里插入图片描述
  • 接下来将ThreadB封装成Node节点,追加到AQS队列。设置新节点的prev指向AQS队尾节点;将队尾节点的next指向新节点;最后将AQS尾节点指针指向新节点。此时AQS变化,如下图:
    在这里插入图片描述

3.当下一个线程抢夺锁失败时,重复上面步骤。将线程封装成Node,追加到AQS队列。假设此次抢占锁失败的线程为ThreadC,此时AQS变化,如下图:
在这里插入图片描述

线程被唤醒时,AQS 队列的变化

ReentrantLock 唤醒阻塞线程时,会按照FIFO的原则从AQShead头部开始唤醒首个节点中线程。

head节点表示当前获取锁成功的线程ThreadA节点。

当ThreadA释放锁时,它会唤醒后继节点线程ThreadB,ThreadB开始尝试获得锁,如果ThreadB获得锁成功,会将自己设置为AQS的头节点。ThreadB获取锁成功后,AQS变化如下:

  1. head指针指向ThreadB节点。

  2. 将原来头节点的next指向Null,从AQS中删除。

  3. 将ThreadB节点的prev指向Null,设置节点的thread=null。
    在这里插入图片描述
    上面就是线程在竞争锁时,线程被阻塞和被唤醒时AQS 队列的基本实现过程。

http://www.dtcms.com/wzjs/376055.html

相关文章:

  • 网站换了域名怎么查网站收录申请
  • 越秀区做网站seo的基本工作内容
  • 怎么找企业做网站网站建设哪个公司好
  • 开源房产网站源码seo推广知识
  • 制作论坛类网站模板郑州网站顾问热狗网
  • wordpress付费注册插件重庆搜索引擎seo
  • 广告设计与制作专业主要学什么廊坊快速优化排名
  • 个人做网站的好处广州公关公司
  • wordpress设置密码我赢网seo优化网站
  • 手机网站后台怎样在百度上发布广告
  • 医院网站建设方案网站宣传推广方案
  • 如何做自己公司的网站seo指的是
  • 手机网站开发费用爱站关键词
  • 微信分销系统多少钱360优化大师官方最新
  • 网站城市分站是怎么做的长沙网站定制公司
  • 做网络作家哪个网站好怎么免费创建网站
  • 怎样用一台电脑做代理 让别的电脑通过代理上几个网站俄罗斯搜索引擎入口 yandex
  • 企业网站建设 信科网络百度竞价推广自己可以做吗
  • 分类网站建设方案河北网站优化公司
  • 深圳营销型网站费用石家庄最新消息今天
  • 如何查网站的备案信息如何搭建网站
  • 做海报去哪个网站找素材比较好呢排名优化系统
  • 广州地区做网站的关键词歌词打印
  • 网站网站建设设计公司seo诊断方案
  • 网站首页做跳转互联网广告公司排名前十
  • 无锡市做企业网站的seo外包靠谱
  • 番禺高端网站建设公司百度账户
  • 网站建设卖手机代码seo优化就业前景
  • 好的交互设计网站友情链接购买平台
  • 山东滨州网站建设公司河南网站开发公司