【刨根问底】JUC并发工具类
文章平均质量分 87
从JUC原理入手,带你深入了解JUC实现,帮助你掌握JUC并发工具类。
Java不惑
这个作者很懒,什么都没留下…
展开
-
【刨根问底】带你深入理解JUC并发工具类 — 开篇
大家好,我是Java不惑(WX公众号同名)。数据同步问题一直是并发编程的难点,Java中原生的synchronized修饰符可以解决大部分并发问题,但是其性能问题饱受开发者诟病。JDK1.5推出JUC并发工具类,让锁的控制更加精细,性能也大大提高,掌握了JUC的原理,可以帮助你更好的处理并发编程中的问题。JUC并发包,即java.util.concurrent包,是JDK的核心工具包,是JDK1.5之后,由 Doug Lea实现并引入。为了学好并发,我学习了很多资料,包括各种收费的专栏,《Java并原创 2021-08-19 23:33:55 · 151 阅读 · 0 评论 -
【刨根问底】带你深入理解JUC并发工具类 — 信号量和管程
大家好,我是Java不惑(WX公众号同名),这是专栏的第三篇文章。在前面的两篇文章中,我介绍了volatile、cas以及其在处理器中的实现。我们需要知道,volatile和cas是最基础的工具,实际的业务场景中共享变量的同步问题是非常复杂的,所以很少直接使用它们来处理同步问题。基于这个工具上面我们可以封装成“锁”,方便我们解决多线程同步问题。今天我会讲一下基于volatile+cas实现的同步机制,也就是信号量和管程。信号量信号量的概念是由荷兰计算机科学家艾兹赫尔·戴克斯特拉(Edsger W原创 2021-08-28 23:49:00 · 279 阅读 · 0 评论 -
【刨根问底】带你深入理解JUC并发工具类 — 缓存一致性和内存屏障
大家好,我是Java不惑(WX公众号同名)。这是专栏的第二篇文章,我将给大家简单介绍一下volatile和cas的原理。为什么说简单介绍,因为不同的处理器有不同的实现方式,并且处理器过于复杂,我们只需要简单了解就可以了。在这篇文章中,我将向大家介绍缓存一致性协议,并介绍缓存一致性协议是怎样实现可见性和有序性。lock指令前缀对volatile修饰的变量,编译后的指令增加了lock指令的前缀:lock add1 $0x0,(%esp)CAS编译后,也会自动增加lock前缀。lock cmpxc原创 2021-08-22 00:56:13 · 212 阅读 · 0 评论 -
【刨根问底】带你深入理解JUC并发工具类 — volatile和cas
大家好,我是Java不惑(WX公众号同名)。这是专栏的第一篇文章,我将给大家介绍一下计算机体系中的高速缓存以及三大并发问题,在介绍三大并发问题时会介绍一下volatile修饰符在这三个问题中起到的作用,最后介绍了CAS的使用。希望这篇文章让你有所收获!高速缓存在计算机体系中,CPU内核处理数据的速度和在内存中读取数据的速度不匹配,为了解决它们之间存在的巨大差异,引入高速缓存。内核读取数据时,会首先去高速缓存中读取,高速缓存中不存在数据则去内存中读取,读取后会将数据存入高速缓存中。根据时间局部性原理,原创 2021-08-19 23:35:39 · 172 阅读 · 0 评论