- 博客(7)
- 收藏
- 关注
原创 ReentrantLock的Condition源码解析
前言这一篇文章,想和大家分享一下Condition的源码学习过程,Condition的应用,其实是很简单的,相信大家在项目中或者demo中或多或少都用过。最不济,在应付面试的时候,相信也有不少小伙伴背过不少的面试题。话不多说,水平有限,文章中有错误的地方也请不吝指正,共同进步。应用场景ReentrantLock的Condition的设计场景,我在上一篇博客也分享过,建议先移步上一篇看一下ReentrantLock, Condition只是其中的一个应用。例子先上一段代码,看一下如何使用@Slf4
2021-12-07 15:02:07 212
原创 ReentrantLock源码分析
前言ReentrantLock这个类,相信大家多多少少在项目里都会去用到这个类,但我相信大部分人都没去研究过源码。我在这里把我学习这个类的一些经验和心得分享出来,希望对大家有所帮助,水平有限,文章中有错误的地方也请不吝指正,共同进步。学习基础这个类依旧是根据aqs框架去实现的,如果不知道什么是aqs的,可以去看看我写的aqs的学习笔记。独占锁和共享锁,aqs是基础,关于aqs的部分,本文将不再赘述。引导关于ReentrantLock的源码解析,百度上没有一万个人写,也至少有八千个人写,大家随便百度
2021-12-03 14:22:06 415
原创 CountDownLatch、CyclicBarrier和Semaphore
前言学习了aqs源码之后,我觉得很有必要把这三个类再系统的学习一下, 同时记录下学习的过程。如果没有看过aqs独占锁和aqs共享锁的源码,我建议你先去学习aqs。aqs是基础,这三个类只是Doug Lea为了满足多线程编程下各种线程按照需要的场景来运行而写的三个工具类。aqs不懂,学习这三个类也只是走马观花,不得精髓。水平有限,文章中有误的地方也请不吝指正,互相帮助,共同学习。CountDownLatchCountDownLatch是我在项目中用的最多的一个并发类,现在我更喜欢用Completable
2021-11-29 15:21:29 381
原创 浅谈volatile
前言提到volatile关键字的原理,我这里不想赘述,其实我也讲不好,因为这不是一篇简短的文章和我这个水平就能讲的清楚的,我建议你如果想了解一下volatile的原理,可以去看一下《Java并发编程的艺术》这本书中的2-1,3-4章节,认真通读一遍,你就会了解volatile设计到了哪些cpu指令,是如何保证的共享变量的可见性,以及使用volatile来进行线程之间通信的原理,volatile关键字相较于synchronized的优势等等,相信你会有所收获。volatile这篇文章我主要和大家分享几个
2021-11-12 17:37:43 654
原创 AbstractQueuedSynchronizer共享锁源码分析
前言上一篇文章中,我们分析了AbstractQueuedSynchronizer独占锁的源码。没看的建议先移步上一篇,共用的代码这篇文章中不会再进行详细的解释。接下来,会继续把学习AbstractQueuedSynchronizer共享锁的过程记录下来,希望对你们有所帮助。如果文章中有错误的地方,也请在评论区不吝指正,本人也将第一时间修改错误,来帮助更多的人。共享同步器的原理共享锁的实现和同步锁稍有不同,共享锁是对一组资源的控制,打个通俗的比方。学校器材室有10个篮球,每个班级都有权利来借取篮球去使
2021-11-08 18:26:55 126
原创 AbstractQueuedSynchronizer独占锁源码分析
前言:关于AbstractQueuedSynchronizer的学习,之前总是断断续续,最近重新翻ThreadPoolExecutor的源码时,发现内部类Worker也是一个实现了AbstractQueuedSynchronizer的自定义同步器,于是决定把AbstractQueuedSynchronizer源码再仔细的翻一遍,同时记录下学习中的疑问,以及自己对于疑问的一些收获,希望对大家有所帮助。水平有限,如果文章中有错误的地方,也请不吝指正,本人也将第一时间把错误的地方给更正过来。本文只设计到独占锁
2021-11-05 18:08:19 118
原创 lombok中@Builder注解使用和需要注意的坑
1. 为什么要使用Builder《effective jave》书中提到,当一个封装对象中属性过多时,使用builder构造器是一个很好的选择,代码可读性强。但是使用builder又要在对象里写一堆构造器代码,新增了属性或者删除之后还要同步修改构造器代码,非常的繁琐,所以我也不愿意使用。后来,我发现了lombok中有了@Builder注解。2. @Builder注解的使用@Getter@Setter@Builderpublic class Father { private Intege
2021-07-20 17:22:20 3247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人