![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发专题
文章平均质量分 85
戴~
翻过一座浪浪山,就会有下一座浪浪山,但是你会更从容的去面对
展开
-
AQS之独占锁ReentrantLock源码分析
1:进行解锁操作,它会从尾节点开始寻找最顶层的节点是否为-1,如果为-1那么就是阻塞线程,获取阻塞线程节点进行解锁操作。1:获取前置节点,判断是否为头节点,如果不是直接阻塞,等待获取解锁,如果是就进行一次cas获取锁操作,2:获取当前锁状态-解锁数,判断是否是重入锁,如果不算重入锁返回ture,如果是重入锁,则进行锁-1。1:添加节点,判断尾节点是否存在,不存在那么就通过enq进行初始化操作,存在将当前节点放入链表中。2:如果正在运行的线程是需要获取锁的线程,状态值+1记录重入次数(重入锁)原创 2023-04-07 11:46:37 · 241 阅读 · 0 评论 -
线程池源码解析
核心线程(Worker)一直空闲也不终止,因为通过workQueue.take()实现的,它会一直阻塞到从等待队列中取到新的任务。非核心线程空闲指定时间后终止是通过workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS)实现的,一个空闲的Worker只等待keepAliveTime,如果没有获取到任务则循环终止,线程也就运行结束了。原创 2023-03-23 16:11:48 · 334 阅读 · 0 评论 -
HashMap源码分析
HashMap源码分析原创 2023-03-07 16:48:26 · 212 阅读 · 0 评论