
钱多多的精炼总结
文章平均质量分 89
钱多多的精炼总结。
钱多多_qdd
请你爱自己,也爱生活
展开
-
Netty之Pipeline总结
一、一个channel,拥有一个pipeline——handler容器原创 2021-09-23 00:15:56 · 853 阅读 · 0 评论 -
Netty之Channel、NioEventLoopGroup、客户端connect方法总结
一、bind方法bind方法会调用initAndRegister方法1.1 initAndRegister方法1.1.1 生成channel的构造方法channel.newChannel()。通过反射生成了我们显式设置的NioSocketChannel.class对象,反射是用它的无参构造方法生成的。 无参构造方法级联调用了多个构造参数。在这个过程中,通过jdk自带的spi机制生成了原生nio的socketChannel对象,这个参数最终会在AbstractChannel...原创 2021-09-18 01:03:30 · 805 阅读 · 0 评论 -
Reactor与Netty基本操作流程总结
前言一、用自己的话说清楚Reactor模型线程模型2:Reactor 模式1.1 基本介绍针对传统阻塞 I/O 服务模型的 2 个缺点,比较常见的有如下解决方案:1)基于 I/O 复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需阻塞等待所有连接。当某条连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理;2)基于线程池复用线程资源:不必再为每个连接创建线程,将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连原创 2021-09-16 22:18:09 · 545 阅读 · 0 评论 -
Netty阶段性学习总结(一)
前言前面的文章已经有讲过Netty,为了巩固自己的知识和理清Netty的知识脉络,所以整理了一些相关的关键知识。一、BIO、NIO、AIO的区别1.1 BIO我们java里常说的传统IO, 基于流模型,同步阻塞。阻塞:也就是在读输出流、输入流时,在读写动作完成前,线程是一直阻塞的。缺点是IO效率低。1.2NIO有翻译成Non-Block-IO,也有翻译成了New-IO。NIO本身是基于事件驱动的思想来实现的。它同时支持阻塞与非阻塞模式...原创 2021-09-14 18:11:58 · 116 阅读 · 0 评论 -
AQS的理解与总结
前言这篇文章是我自己整理前面几篇关于ReentrantLock和Condition的文章:理解J.U.C中的ReentrantLock常见并发工具的使用和原理解析——Condition(重点在第五节)ReentrantLock梳理和总结因这几篇文章以及讲的挺详细了,所以本篇文章只做总结和捋思路,不涉及太详细的源码解读。一、ReentratLock1.1 ReentratLock类关系图ReentrantLock实现了Lock接口 ReentrantLo...原创 2021-09-11 02:21:57 · 158 阅读 · 0 评论 -
Condition梳理和总结
前言前面已经分析过Condition:常见并发工具的使用和原理解析——Condition(重点在第五节)有兴趣可以看看,本篇文章我们着重讲源码。await:把当前线程阻塞挂起 signal:唤醒阻塞的线程一、await()调用 Condition 的 await()方法(或者以 await 开头的方法),会使当前线程进入阻塞队列并释放锁,同时状态变成等待状态。当从await()方法返回时,当前线程一定获取了Condition相关联的锁。public final ...原创 2021-08-03 01:53:47 · 217 阅读 · 0 评论 -
ReentrantLock梳理和总结
的的一、ReentrantLock的lock()梳理首先贴下lock()源码调用时序图:源码:首先通过cas抢占锁 如果抢占失败,则执行acquire()方法tryAcquire方法:再抢占一次锁。会走到nofairTryAcquire方法,nofairTryAcquire方法的主要作用是再次抢占锁。分为两种情况,state为0和state不为0。state为0表示没有重入,state不为0且当前抢占锁的线程为当前线程,表示重入了锁,state需要+1。 addWaite...原创 2021-07-25 23:21:04 · 192 阅读 · 3 评论 -
说说Thread的interrupt()
一、interrupt()、isInterrupt()、interrupted()可以参考我前面的文章4.4.2节:了解多线程的意义和作用二、interrupt()的作用与使用一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thread.interrupt 的作用其实也不是中断线程,而是「通知线程应该中断了」,具体到底中断还是继续运行,应该由被通知的线程自己原创 2021-05-24 23:09:26 · 1326 阅读 · 0 评论 -
volatile的总结
前言本篇文章是我自己对之前文章的总结,以及增加了流程图帮助自己梳理。一、可见性和有序性问题来源以及解决方案的逐步演化上图就是可见性和有序性问题来源以及解决方案的逐步演化过程图。下面我会逐步通过自己的语言加以解释。二、演化过程解释2.1 cpu高速缓存cpu是有高速缓存的。cpu运行时会把主存中的数据读到高速缓存中,那么线程A如果修改了值,对线程B是不可见的。2.2 总线锁在多cpu下,当一个处理器要对共享数据操作的时候,在总线上会发出一个Lock信号,使其他处理器无法原创 2021-06-02 23:23:20 · 109 阅读 · 0 评论