栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

说一下JUC和AQS

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

说一下JUC和AQS

        JUC是java.util.concurrent包的缩写,见名知意concurrent中文译为同步执行的,意思就是并行,所以这个包中主要提供的就是并行处理的一些解决方案,并行处理的解决方案通常都是加锁,所以这个包下的的方法都是采用CAS方式进行加锁的。

        所谓CAS就是通过java底层的Unsafe类直接对内存进行操作,CAS由三个参数构成:

        内存值V,旧的预期值A,要更新的值B。

        当V=A时才会将B修改并且返回true。

        以JDK1.8为例JUC下有两个子包atomic和locks,atmoic中主要定义了一些原子操作的类,而locks中主要定义了基于AQS(AbstractQueuedSynchronzer)实现的加锁机制。

        AQS是一个抽象类,其类中定义了一系列方法,而所有的方法都是通过对state变量进行原子从操作来进行锁的实现,其内维护了一个双向链表用作获取锁的队列。

        AQS定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。

        JUC包下还有其他关于原子操作的类,以ConcurrentHashMap为例,当对其进行put时,如果未发生hash冲突都是采用CAS方式实现线程安全的,如果发生冲突需要采用synchronized进行加锁处理。

理解之上,写出想要说的话!

以上仅为个人拙见,写出来加深记忆,错误之处欢迎大神指正!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号