当前位置: 首页> 房产> 市场 > 房屋装修设计师怎么学_网站正能量晚上不用下载免费进入_网络营销管理_哈尔滨seo

房屋装修设计师怎么学_网站正能量晚上不用下载免费进入_网络营销管理_哈尔滨seo

时间:2025/9/9 23:33:10来源:https://blog.csdn.net/Chang_Yafei/article/details/142900765 浏览次数:0次
房屋装修设计师怎么学_网站正能量晚上不用下载免费进入_网络营销管理_哈尔滨seo

在AQS(AbstractQueuedSynchronizer)中,节点的入队操作主要发生在竞争同步状态失败时。

时机一:

在模板方法 acquire() 中,如果调用 tryAcquire(arg) 尝试成功, acquire() 将直接返回,表
示已经抢到锁;如果不成功,则开始将线程加入等待队列。
这里分为三种场景:
1 )模板方法 acquire(arg) 通过 addWaiter(Node node, int args) 方法,尝试将该节点加入到同步队
列的队尾,在存在竞争的场景时一般会成功。当然,如果加入失败,或者同步队列为空,就开始调
enq(final Node node) 自旋入队。
2 enq() 方法通过 CAS 自旋将新节点插入队列尾部。具体来说,如果 AQS 的队列非空,新节点
入队的插入位置在队列的尾部,并且是通过 CAS 方式插入的,插入之后 AQS tail 将指向新节点,
新节点作为尾节点
3 enq() 方法初始化 AQS 队列再执行 CAS 自旋。如果 AQS 的队列为空,新节点入队时首先进行
队列初始化, AQS 通过 CAS 方法创建队首节点,并且将 tail 指针指向队首节点。然后自旋,进入 CAS
自旋插入操作,直到插入成功,自旋才结束。

时机二:

Condition 等待队列上的节点被 signal() 唤醒,会通过 enq(final Node node) 自旋入队,插
AQS 的尾部。
关键字:房屋装修设计师怎么学_网站正能量晚上不用下载免费进入_网络营销管理_哈尔滨seo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: