Zhl Blog

充满好奇,保持谦逊,一途一心。

1-1.Netty源码:构建NioEventLoopGroup

构建NioEventLoopGroup

关系图 先上NioEventLoopGroup的继承关系图,有删减 一般来说Netty在启动的时候,会实例化两个NioEventLoopGroup,一个是boss,一个是worker, boss是用来接受新的链接,worker是用来处理新链接的网络读写,具体初始化的类方法是在MultithreadEventExecutorGroup中进行的。 1 2 3 //实例化参数是线程数,不传的...

1-1-1.Netty源码:线程执行器ThreadPerTaskExecutor

线程执行器ThreadPerTaskExecutor

概述 ThreadPerTaskExecutor 字面意思是每个线程的任务执行器,是java.util.concurrent包下的Executor的一个实现类,Executor主要用于执行提交的Runnable任务,实现了任务提交和任务执行进行的解耦,所以可以大概猜到ThreadPerTaskExecutor跟线程执行任务有关。 1 2 //MultithreadEventExecutorG...

Netty源码阅读-目录

目录

一.Nio相关 BIO与NIO、AIO的区别(这个容易理解) 这篇文章很清楚的描述几种IO的区别,也很清楚说明了异步,同步,堵塞,非堵塞的基本概念 Scalable IO in Java》学习笔记 二.Netty源码相关 一个netty的服务端的例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 pub...

《Scalable IO in Java》学习笔记

《Scalable IO in Java》学习

Doug Lea 大师写的《Scalable IO in Java》 文章地址:《Scalable IO in Java》 我就当边学变翻译文章了,水平渣,如有错误定当改之。😂 网络服务 在大部分的网络服务系统中(例如.web服务,分布式对象)基础结构,如下: 读请求 对请求进行解码 处理业务逻辑 对处理完对结果进行编码 发送响应 但不同网络服务对于上面的...

2018个人总结

个人总结

写在前面 这是第一次正儿八经的开始针对个人的年终总结,从2013年7月份工作到现在,除了年底公司要求交的工作总结外还从来没有认真的思考和写过关于自己这一年来的总结。以前也拜读过其他大神写的一些总结和关于学习的文章,很是崇拜。自已也仿照过断断续续的写过,不过由于没坚持下来,所以很多都不了了之了。直到最近才真正系统的学习起来并记录笔记。用一句话来安慰和告诫自己 当你真正想做一件事的时候,什么时...

四.线程池

一些高并发的基础

new Thread 弊端 每次new Thread 新建对象 性能差 线程缺乏统一管理,可能无限制的新建线程,互相竞争,有可能占用过多系统资源导致死机或者OOM 缺少更多功能,如更多执行,定期执行,线程中断 线程池的好处 重用存在的线程,减少对象创建,消亡的开销,性能好 可有效控制最大并发线程数,提高系统资源利用率,同事可以避免过多资源竞争,避免阻塞 提供定...

三.线程安全策略

线程安全的一些信息

参考慕课网并发课程做的笔记 不可变对象 不可变的对象需要满足的条件 对象创建以后期状态就不能改变。 对象所有域都是final类型 对象是正确创建的(对象创建期间,this引用没有逸出) 创建不可变对象的方式(参考String类型) 将类声明成final类型,使其不可以被继...

二.线程安全

线程安全的一些信息

参考慕课网并发课程做的笔记 当多个线程访问某个类时候,不管运行时环境采取任何调度方式或者这些进程如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能变现出正确行为,那么称这个类就是线程安全的 原子性:提供了互斥访问,同一时刻只能有一个线程来对他进行操作。 可见性:一个线程对主内存的修改可以及时的被其他线程观察到。 有序性:一个线程观察其他线程中的指令执行顺...

一.高并发基础

一些高并发的基础

参考慕课网并发课程做的笔记 并发的基本概念 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替的替换或者换出内存,这些线程是同时‘存在‘的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。 CPU多级缓存 cpu频率分常快,主存跟不上,这样在处理器的时钟周期内,cpu常常需要等待主存,浪费时间...