【autojs ui源码】【帝国cms收费视频源码】【会议室 预约 源码】排队分红源码_分红小程序源码

2024-11-29 23:12:40 来源:网狐单挑源码 分类:探索

1.ReentrantLock源码详细解析

排队分红源码_分红小程序源码

ReentrantLock源码详细解析

       在深入解析ReentrantLock源码之前,排队我们先了解ReentrantLock与同步机制的分红分红关系。ReentrantLock作为Java中引入的源码并发工具类,由Doug Lea编写,小程序源相较于synchronized关键字,排队它提供了更为灵活的分红分红autojs ui源码锁管理策略,支持公平与非公平锁两种模式。源码AQS(AbstractQueuedSynchronizer)作为实现锁和同步器的小程序源核心框架,由AQS类的排队独占线程、同步状态state、分红分红FIFO等待队列和UnSafe对象组成。源码AQS类的小程序源内部结构图显示了其组件的构成。在AQS框架下,排队等待队列采用双向链表实现,分红分红头结点存在但无线程,源码T1和T2节点中的线程可能在自旋获取锁后进入阻塞状态。

       Node节点作为等待队列的基本单元,分为共享模式和独占模式,值得关注的是waitStatus成员变量,它包含五种状态:-3、-2、帝国cms收费视频源码-1、0、1。本文重点讨论-1、0、1状态,-3状态将不涉及。非公平锁与公平锁的差异在于,非公平锁模式下新线程可直接尝试获取锁,而公平锁模式下新线程需排队等待。会议室 预约 源码

       ReentrantLock内部采用非公平同步器作为其同步器实现,构造函数中根据需要选择非公平同步器或公平同步器。ReentrantLock默认采用非公平锁策略。非公平锁与公平锁的区别在于获取锁的顺序,非公平锁允许新线程跳过等待队列,而公平锁严格遵循队列顺序。

       在非公平同步器的实例中,我们以T1线程首次获取锁为例。T1成功获取锁后,将exclusiveOwnerThread设置为自身,照片相册冲印网站源码state设置为1。紧接着,T2线程尝试获取锁,但由于state为1,获取失败。调用acquire方法尝试获得锁,尝试通过tryAcquire方法实现,非公平同步器的实现调用具体逻辑。

       在非公平锁获取逻辑中,通过CAS操作尝试交换状态。公众号php刮刮卡源码交换成功后,设置独占线程。当当前线程为自身时,执行重入操作,叠加state状态。若获取锁失败,则T2和T3线程进入等待队列,调用addWaiter方法。队列初始化通过enq方法实现,enq方法中的循环逻辑确保线程被正确加入队尾。新线程T3调用addWaiter方法入队,队列初始化完成。

       在此过程中,T2和T3线程开始自旋尝试获取锁。若失败,则调用parkAndCheckInterrupt()方法进入阻塞状态。在shouldParkAfterFailedAcquire方法中,当前驱节点等待状态为CANCELLED时,方法会找到第一个非取消状态的节点,并断开取消状态的前驱节点与该节点的连接。若T5线程加入等待队列,T3和T4线程因为自旋获取锁失败进入finally块调用取消方法,找到等待状态不为1的节点(即T2),断开连接。

       理解了shouldParkAfterFailedAcquire方法后,我们关注acquireQueued方法的实现。该方法确保线程在队列中正确释放,如果队列的节点前驱为head节点,成功获取锁后,调用setHead方法释放线程。setHead方法通过CAS操作更新head节点,释放线程。acquire方法中的阻塞是为防止线程在唤醒后重新尝试获取锁而进行的额外阻断。

       锁的释放过程相对简单,将state减至0,将exclusiveOwnerThread设置为null,完成锁的释放。通过上述解析,我们深入理解了ReentrantLock的锁获取、等待、释放等核心机制,为并发编程提供了强大的工具支持。

更多资讯请点击:探索

推荐资讯

vue源码原文

1.大文件上传Vue完整代码切片上传、秒传、断点续传)大文件上传Vue完整代码切片上传、秒传、断点续传) 原创不易,注释都在代码中,点赞收藏不迷路~1.安装依赖 npmi-Sspark-md5

《SEE HEAR LOVE》幕後四件事:新木優子差點抓不住跳樓的山下智久?

文:林君玶對作品總是全力以赴,以漫畫為職業的泉本真治,某天得知自己的作品即將被改編成電影的好消息,與助手一起感到欣喜萬分。沒想到得來不易的快樂卻稍縱即逝,真治突然病倒,漸漸失去視力。好不容易步入正軌的

豐田革新電動車生產模式,固態電池新技術成本與尺寸減半,目標2030年銷量350萬輛

全球電動車市場,即將進入白熱化階段,去2022)年年底由特斯拉Tesla)帶動的降價風潮,使包含中國電動車巨擘比亞迪BYD)等眾多車廠跟進。而作為傳統汽車大廠的日本豐田Toyota)近日也革新電動車生