java开发面试题:JAVA的AQS是否了解,它是干嘛的?

12 篇文章 0 订阅
11 篇文章 0 订阅

JAVA的AQS是否了解,它是干嘛的?

简单讲就是两句话:

1、是什么?

AQS就是一个工具类,算是在并发情况下规范了对“资源”或者说“数据”操作的一种机制或者说是规范。专业一点的叫法是:抽象队列同步器

2、这玩意干啥呢?

AQS是给JAVA一系列锁以及同步器或者同步对象的底层提供了实现的框架,你也可以理解成为一种规范。就比如实现像ReentrantLock,CountDownLatch,Semaphore这样的工具。

来提供一下网上比较多的两句话:

AQS是什么:AQS,是AbstractQueuedSynchronizer简称,直翻过来叫抽象的队列式同步器, 也可以称作队列同步器,它是java.util.concurrent.lock包下的一个工具类。直观来讲,AQS是Java提供的一个类,这个类是被Abstract修饰的,需要被子类继承。也就是说AQS是Java并发中用以解决多线程访问共享资源问题的同步机制的基本的框架(或者说是一种规范),为Java并发同步组件提供统一的底层支持。即,AQS是个为各个同步组件提供基本框架的一个抽象类。

AQS做了什么:提供解决同步问题的基础框架。AQS类内维护了一个volatile int型的变量state,用于表示同步状态(锁的释放与获取),同时提供了一些列诸如getstate、setstate、compareAndSetState的方法来管理该同步状态,这些方法是子类中需要重写的部分,并且,AQS提供了模板方法去调用这些重写的方法;另外,AQS用一个虚拟的CLH FIFO的双向队列来管理被阻塞的线程。


个人简介


我是一名java开发工程师,目前30K,目前做的是无人驾驶,欢迎和大家一起交流开发技术,我们一起高薪就业,我们一起打妖怪哦,我们还有面试题小程序哦!

搜【java开发全栈】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值