AQS抽象队列同步器
AbstractQueuedSynchronizer 抽象的队列同步器
AQS是volatile+CAS机制实现的锁模板,保证了代码的同步性和可见性。AQS定义了一套多线程访问共享资源的同步器框架,封装了线程阻塞等待挂起,解锁其他线程的逻辑,
AQS子类只需要根据状态变量,判断是否可获取锁,是否释放锁,使用LockSupport挂起,唤醒线程即可。
AQS内部维护一个同步队列(CFH队列)(FIFO),元素就是包装了线程的Node。
同步队列中首节点是获取到锁的节点,它在释放锁时会唤醒后继节点,后继节点获取到锁的同时,会把自己设为首节点。
线程会先尝试获取锁,失败则封装成Node,CAS加入同步队列的尾部。在加入同步队列尾部时,会判断先驱节点是否是Head节点,并尝试加锁(可能先驱节点刚好释放锁),
否则线程进入阻塞等待。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律