![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 87
阳阳阳已经存在了
大三男孩,热爱后端
展开
-
时间轮原理及其在框架中的应用
在本篇文章中,先是举了 3 个例子来论述为什么需要使用时间轮,使用时间轮的优点,在文末处也分别对这 3 个例子在 Dubbo 或 Redisson 中的使用做了介绍。接着通过画图讲解了单层时间轮与多层时间轮机制,让读者对时间轮算法有了一个简单的认识。在第二部分,依次讲解了 Dubbo 时间轮中涉及到的 TimerTask、Timeout、HashedWheelBucket、Worker、HashedWheelTimer,分析了它们的原理与源码实现。转载 2022-09-26 14:53:20 · 358 阅读 · 0 评论 -
线程池任务队列原理
众所周知,配置线程池时有任务队列这个参数,一般我们选用的就是ArrayBlockingQueue和LinkedBlockingQueue,今天一起来研究下他们的底层吧。原创 2022-09-06 21:55:44 · 1106 阅读 · 0 评论 -
五种方式实现多线程循环打印问题
三个线程T1、T2、T3轮流打印ABC,打印n次,如ABCABCABCABC…N个线程循环打印1-100…wait-notify循环打印问题可以通过设置目标值,每个线程想打印目标值,如果拿到锁后这次轮到的数不是它想要的就进入waitclass Wait_Notify_ABC { private int num; private static final Object Lock = new Object(); private void print_ABC(int target原创 2021-12-13 17:20:24 · 2793 阅读 · 3 评论 -
synchronized锁升级底层原理
写在前面 今天我们来聊聊 Synchronized 里面的各种锁:偏向锁、轻量级锁、重量级锁,以及三个锁之间是如何进行锁膨胀的。先来一张图来总结 提前了解知识 锁的升级过程 锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁(但是锁的升级是单向的,也就是说只...原创 2021-10-31 13:21:44 · 548 阅读 · 11 评论