AQS是什么全称,它的工作原理和作用是什么?

2026-04-18 00:400阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计655个文字,预计阅读时间需要3分钟。

AQS是什么全称,它的工作原理和作用是什么?

概念:AQS是多线程同步器,它是JUC包中多个组件的底层实现,例如lock、countDownLatch、Semaphore等都用到了AQS。AQS提供了两种锁机制:分别是排队锁和共享锁。排队锁就是多个线程对同一资源进行加锁时,会按照一定的顺序排队等待,只有前一个线程释放锁后,下一个线程才能获得锁。共享锁允许多个线程同时访问同一资源,但每个线程都必须在访问完毕后释放锁。

概念:aqs是多线程同步器,他是juc包中多个组件的底层实现,比如lock、countDownLatch、Semaphore都用到了AQS,aqs提供了两种锁的机制分别是排他锁和共享锁。排它锁就是多个线程对同一共享资源进行竞争的时候,只允许一个线程访问,如lock中的ReentrantLock重入锁。共享锁也成为读锁,就是在多个线程在同一时刻获得这个锁的资源如CountDownLatch、Semaphore。

三个核心:

  • 互斥变量的设计:有一个status变量记录锁状态。0代表没有线程持有锁,大于等于1代表已经有线程持有锁资源。

  • 未竞争到锁的线程等待,以及竞争到锁资源释放锁之后的唤醒:未竞争到锁先看队列中有没有节点,没有aqs会生成两个节点(一个空节点状态为0且owner为null,一个放刚刚来的线程)。如果对列中有节点那么尾部插入。竞争到锁之后:重入问题、锁状态为恢复为0、唤醒队列中等待的线程。

阅读全文

本文共计655个文字,预计阅读时间需要3分钟。

AQS是什么全称,它的工作原理和作用是什么?

概念:AQS是多线程同步器,它是JUC包中多个组件的底层实现,例如lock、countDownLatch、Semaphore等都用到了AQS。AQS提供了两种锁机制:分别是排队锁和共享锁。排队锁就是多个线程对同一资源进行加锁时,会按照一定的顺序排队等待,只有前一个线程释放锁后,下一个线程才能获得锁。共享锁允许多个线程同时访问同一资源,但每个线程都必须在访问完毕后释放锁。

概念:aqs是多线程同步器,他是juc包中多个组件的底层实现,比如lock、countDownLatch、Semaphore都用到了AQS,aqs提供了两种锁的机制分别是排他锁和共享锁。排它锁就是多个线程对同一共享资源进行竞争的时候,只允许一个线程访问,如lock中的ReentrantLock重入锁。共享锁也成为读锁,就是在多个线程在同一时刻获得这个锁的资源如CountDownLatch、Semaphore。

三个核心:

  • 互斥变量的设计:有一个status变量记录锁状态。0代表没有线程持有锁,大于等于1代表已经有线程持有锁资源。

  • 未竞争到锁的线程等待,以及竞争到锁资源释放锁之后的唤醒:未竞争到锁先看队列中有没有节点,没有aqs会生成两个节点(一个空节点状态为0且owner为null,一个放刚刚来的线程)。如果对列中有节点那么尾部插入。竞争到锁之后:重入问题、锁状态为恢复为0、唤醒队列中等待的线程。

阅读全文