编程技术分享平台

网站首页 > 技术教程 正文

谈谈你对 AQS 的理解(谈谈对al的认识)

xnh888 2024-10-30 04:43:44 技术教程 45 ℃ 0 评论

AQS的定义

AQS 是 AbstractQueuedSynchronizer 的简称,是并发编程中比较核心的组件。在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你不懂并发编程,那么你很难通过大厂高薪岗位的面试。这一句话我是很认同的,如果我们的项目里面还没有用到并发相关的技术框架,只能说我们的业务技术要求很低。

AQS在并发框架中的使用,及源码截图

AQS 是多线程同步器,它是 J.U.C 包中多个组件的底层实现,如 ReentrantLock、CountDownLatch、Semaphore 等都用到了 AQS.

如源码图:



从本质上来说,AQS 提供了两种锁机制,分别是排它锁,和 共享锁。

排它锁,就是存在多线程竞争同一共享资源时,同一时刻只允许一个线程访问该

共享资源,也就是多个线程中只能有一个线程获得锁资源,比如 Lock 中的

ReentrantLock 重入锁实现就是用到了 AQS 中的排它锁功能。



共享锁也称为读锁,就是在同一时刻允许多个线程同时获得锁资源,比如

CountDownLatch 和 Semaphore 都是用到了 AQS 中的共享锁功能。



总结

我们学习并发编程的时候,不能仅仅通过背一些面试题, 这样只能留下一个短期的印象,长期来看价值并不大,因为很容易忘记。这里很重要的一点是印象不够深刻,所以我觉得我们应该要自己多动动手,看到一个面试题的时候,去源码中去找答案。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表