AQS是AbstractQueuedSynchronizer的简称,是并发编程中比较核心的组件。

在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你不懂并发编程,那么你很难通过大厂高薪岗位的面试。

今天来和大家聊聊并发编程中的AQS组件。

我们来看一下,关于“谈谈你对AQS的理解“,看看普通人和高手是如何回答的!

先来看看普通人的回答:

AQS全称是AbstractQueuedSynchronizer,它是J.U.C包中Lock锁的底层实现,可以用它来实现多线程的同步器!

高手的回答:

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

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

排它锁就是存在多线程竞争同一共享资源时,同一时刻只允许一个线程访问该共享资源,也就是多个线程中只能有一个线程获得锁资源,比如Lock中的ReentrantLock重入锁实现就是用到了AQS中的排它锁功能。

共享锁也称为读锁,就是在同一时刻允许多个线程同时获得锁资源,比如CountDownLatch和Semaphore都是用到了AQS中的共享锁功能。

总结

关于普通人和高手对于这个问题的回答,哪个更加好呢? 你们如果有更好的回答,可以在下方评论区留言。

另外,我整理了一张比较完整的并发编程知识体系的脑图,大家感兴趣的可以私信我获取。

本期的普通人VS高手面试系列就到这里结束了,喜欢的朋友记得一键三连,加个关注。

我是Mic,一个工作了14年的Java程序员,咱们下篇文章再见。

【面试普通人VS高手系列】谈谈你对AQS的理解的更多相关文章

  1. 【面试普通人VS高手系列】谈谈你对Seata的理解

    很多面试官都喜欢问一些"谈谈你对xxx技术的理解". 大家遇到这种问题时,是不是完全不知道从何说起. 那么我们来看一下,普通人和高手是如何回答这个问题的? 普通人: Seata是用 ...

  2. 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用

    前段时间一个小伙伴去面试,遇到这样一个问题. "Fail-safe机制与Fail-fast机制分别有什么作用" 他说他听到这个问题的时候,脑子里满脸问号.那么今天我们来看一下,关于 ...

  3. 【面试普通人VS高手系列】Spring Boot的约定优于配置,你的理解是什么?

    对于Spring Boot约定优于配置这个问题,看看普通人和高手是如何回答的? 普通人的回答: 嗯, 在Spring Boot里面,通过约定优于配置这个思想,可以让我们少写很多的配置, 然后就只需要关 ...

  4. 【面试普通人VS高手系列】HashMap是怎么解决哈希冲突的?

    常用数据结构基本上是面试必问的问题,比如HashMap.LinkList.ConcurrentHashMap等. 关于HashMap,有个学员私信了我一个面试题说: "HashMap是怎么解 ...

  5. 【面试普通人VS高手系列】什么叫做阻塞队列的有界和无界

    昨天一个3年Java经验的小伙伴私信我,他说现在面试怎么这么难啊! 我只是面试一个业务开发,他们竟然问我: 什么叫阻塞队列的有界和无界.现在面试也太卷了吧! 如果你也遇到过类似问题,那我们来看看普通人 ...

  6. 【面试普通人VS高手系列】Dubbo的服务请求失败怎么处理?

    今天分享的面试题,几乎是90%以上的互联网公司都会问到的问题. "Dubbo的服务请求失败怎么处理"? 对于这个问题,我们来看一下普通人和高手的回答. 普通人: 嗯- 我记得, D ...

  7. 【面试普通人VS高手系列】ConcurrentHashMap 底层具体实现知道吗?实现原理是什么?

    之前分享过一期HashMap的面试题,然后有个小伙伴私信我说,他遇到了一个ConcurrentHashMap的问题不知道怎么回答. 于是,就有了这一期的内容!! 我是Mic,一个工作了14年的Java ...

  8. 【面试普通人VS高手系列】b树和b+树的理解

    数据结构与算法问题,困扰了无数的小伙伴. 很多小伙伴对数据结构与算法的认知有一个误区,认为工作中没有用到,为什么面试要问,问了能解决实际问题? 图灵奖获得者: Niklaus Wirth 说过: 程序 ...

  9. 【面试普通人VS高手系列】Redis和Mysql如何保证数据一致性

    今天分享一道一线互联网公司高频面试题. "Redis和Mysql如何保证数据一致性". 这个问题难倒了不少工作5年以上的程序员,难的不是问题本身,而是解决这个问题的思维模式. 下面 ...

随机推荐

  1. VirtualBox虚拟机-安装增强功能

    virtualbox中win10虚拟机怎么安装增强功能 安装VBoxGuestAdditions增强功能后,可增加以下功能: 鼠标集成: 可以无缝的在宿主机与虚拟机之间移动鼠标. 自适应窗口:可以任意 ...

  2. linux作业--第十二周

    1.主从复制及主主复制的实现 2.xtrabackup实现全量+增量+binlog恢复库 3.MyCAT实现MySQL读写分离 4.ansible常用模块介绍

  3. STP详解-STP、RSTP、MSTP

    STP详解 01 冗余链路中存在的问题 如图所示LSW1和LSW2之间有两条线路相连,它们之间任何一条链路出现故障另外一条线路可以马上顶替出现故障的那条链路,这样可以很好的解决单链路故障引起的网络中断 ...

  4. Laravel-AJAX-分页

    public function show(Request $request){ $posts = DB::table('posts') ->join('cate','posts.cate_id' ...

  5. DBScan聚类,打破形状的限制,使用密度聚类

    如何用花盆摆放成国庆字,并且包围这两个字. 在DBSCAN中衡量密度主要使用的指标:半径.最少样本量 算法原理 *直接密度可达 如果一个点在核心对象的半径区域内,那么这个点和核心对象称为直接密度可达, ...

  6. [C++]C风格、C++风格和C++11特性的线程池

    线程池概念 假设完成一项任务需要的时间=创建线程时间T1+线程执行任务时间T2+销毁线程时间T3,如果T1+T3的时间远大于T2,通常就可以考虑采取线程池来提高服务器的性能 thread pool就是 ...

  7. mysql 索引模板

    DROP TABLE IF EXISTS `table_name`; CREATE TABLE `table_name` ( `id` bigint(20) UNSIGNED NOT NULL AUT ...

  8. info sharp Are you trying to install as a root or sudo user? Try again with the --unsafe-perm flag

    执行 npm install 编译出错,提示 ERR! sharp EACCES: permission denied, mkdir '/root/.npm' info sharp Are you t ...

  9. Spring MVC 04-- 接收前端参数json格式的方式

    /** * 第一种:以RequestParam接收 * 前端传来的是json数据不多时:{"id":1},可以直接用@RequestParam来获取值 * * @param id ...

  10. 论php常见的问题[转载自原乌云]

    论PHP常见的漏洞 ′ 雨. · 2015/01/14 10:08 0x00 前言 里面很多都是像laterain学习到的, 如果能考上cuit的话 自动献菊花了. 0x01 安装的问题 首先拿到一份 ...