![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 73
小小少年_
这个作者很懒,什么都没留下…
展开
-
jdk1.8-hashmap 树化过程
在jdk8中的hashmap,引入了红黑树的概念,那自然就会涉及到树化的过程,这篇笔记单独记录下树化的一些细节原创 2022-04-20 08:18:36 · 1343 阅读 · 2 评论 -
ThreadPoolExecutor源码笔记
线程池源码原创 2022-04-13 20:08:12 · 325 阅读 · 0 评论 -
jdk优先级队列是如何实现的
在jdk中,自带了一个优先级队列,scheduledThreadPoolExecutor自己内部也实现了一个优先级队列我们先不考虑jdk是如何实现的,其实让我们自己去实现一个优先级队列的实现的话,完全可以这样来做:在入队的时候,根据当前key对应的hash值,或者是根据自己的特定的比较规则,从第一个元素开始对比,如果当前要入队的值小于队列中的第一个key,就插入到前面,反之,继续往后去对比,这样就可以实现一个简单的优先级队列,在每次取出来第一个元素的时候,就是优先级最高的所以:对于优先级队列来说,最为原创 2021-03-20 08:59:21 · 308 阅读 · 0 评论 -
DelayedWorkQueue踩坑笔记
在看这个源码的时候,踩了一个大坑,因为看网上的博客说:在这个类中,有一个DelayQueue的对象,但是我翻了几遍源码,也没看到这个内部类中有一个DelayQueue对象,直到我看了下这个类的继承关系和DelayQueue的基本一样之后,我觉得,有可能在jdk8中,这个内部类的源码改了,这个类自己去实现了DelayQueue的功能所以我就去找了下jdk的源码,发现jdk7的ScheduleThreadPoolExecutor的内部类DelayedWorkQueue也没有DelayQueue对象我就再往前原创 2021-01-02 15:45:48 · 876 阅读 · 1 评论 -
ScheduledThreadPoolExecutor部分源码学习
ScheduledThreadPoolExecutor有一个功能,就是可以指定执行间隔,周期性的去执行指定的任务,和timer、定时任务的作用类似,网上也有好多说ScheduledThreadPoolExecutor的性能要比timer高,这个我还没有研究到,所以就不做对比,这篇笔记,主要记录部分源码的学习类结构ScheduledThreadPoolExecutor可以看到 ScheduledThreadPoolExecutor继承了线程池ThreadPoolExecutor,除此之外,还实现了Sc原创 2021-01-02 15:38:07 · 135 阅读 · 0 评论 -
ThreadPoolExecutor线程池源码(二) - 核心源码
execute源码就直接从execute方法开始看了,初始化的就跳过了java.util.concurrent.ThreadPoolExecutor#executeexecute是提交任务的方法,我觉得核心的逻辑就在这个方法中在提交任务的时候,会判断当前线程池工作线程的数量是否小于corePoolSize,,如果小于,就添加核心线程如果工作线程数量大于corePoolSize,或者是添加核心线程失败,就判断线程池是否是running状态,如果是,将任务添加到任务队列中2.1、添加到任原创 2020-12-12 15:23:47 · 164 阅读 · 0 评论 -
ThreadPoolExecutor源码学习(一) -核心属性及应用
在Executors类中,jdk提供了四个线程池可以使用,分别是newCachedThreadPool:corePoolSize是0,允许创建的最大线程数量是Integer.MAX_VALUEnewScheduledThreadPool:允许创建的最大线程数量是Integer.MAX_VALUEnewFixedThreadPool:任务队列允许的最大长度是Integer.MAX_VALUEnewSingleThreadExecutor:任务队列允许的最大长度是Integer.MAX_VALU原创 2020-12-06 12:22:54 · 162 阅读 · 0 评论 -
根据ReentrantLock -- 解析AQS原理
java.util.concurrent.locks.AbstractQueuedSynchronizer是什么aqs,这是一个队列同步器框架,JUC中的公平锁、非公平锁、重入锁都是以aqs作为基础框架的,定义了加锁、释放锁,加共享锁等一些逻辑AQS是一个抽象类,内部使用了一个FIFO的等待队列,用于多线程等待锁排队,通过state表示当前资源的加锁状态;aqs是基础类,类中定义了模板方法,只需要实现对应的模板方法即可;aqs的作者是Doug Leaaqs内部维护的双向队列,大致是这样的,其中原创 2020-11-12 08:47:50 · 625 阅读 · 5 评论 -
juc-并发工具类源码解析
CountDownLatchCyclicBarrierSemaphore原创 2020-11-02 21:59:48 · 1156 阅读 · 0 评论