谈谈你对AQS的理解
AQS 是 AbstractQueuedSynchronizer 的简称 ,是并发编程中比较核心的组件。
在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你不懂并发编程 ,那么你很难通过大厂高薪岗位的面试。
我们来看一下 ,关于“谈谈你对 AQS 的理解“ ,看看普通人和高手是如何回答的!
普通人的回答
AQS 全称是 AbstractQueuedSynchronizer,它是 J.U.C 包中Lock 锁的底层实现,可以用它来实现多线程的同步器!
高手的回答
AQS 是多线程同步器 ,它是J.U.C包中多个组件的底层实现,如Lock
CountDownLatch、Semaphore 等都用到了 AQS.
从本质上来说 ,AQS提供了两种锁机制 ,分别是排它锁 ,和共享锁。
排它锁,就是存在多线程竞争同一共享资源时,同一时刻只允许一个线程访问该共享资源,也就是多个线程中只能有一个线程获得锁资源,比如
Lock 中的 ReentrantLock 重入锁实现就是用到了能。
共享锁也称为读锁 ,就是在同一时刻允许多个线程同时获得锁资源 ,比如
CountDownLatch 和 Semaphore 都是用到了 AQS 中的共享锁功能。