Netty系列
背包客521
一个java菜鸟的征程......
展开
-
Netty执行任务队列
runAllTasks(ioTime * (100 - ioRatio) / ioRatio); /** * 轮询任务队列中的所有任务,并通过{@link Runnable#run()}方法运行它们。此方法停止运行 * 任务队列中的任务,如果运行时间超过{@code timeoutNanos},则返回。 */ protected boolean run...原创 2020-05-02 19:28:50 · 401 阅读 · 0 评论 -
processSelectedKeys
private void processSelectedKeys() { if (selectedKeys != null) { processSelectedKeysOptimized(); } else { processSelectedKeysPlain(selector.selectedKeys()); ...原创 2020-05-02 18:53:44 · 364 阅读 · 0 评论 -
NioEventLoop的轮训事件
直接看代码: //事件循环 @Override protected void run() { for (;;) { try { try { //hasTasks() 若taskQueue or tailTasks任务队列中有任务 返回false 没有则返回...原创 2020-05-02 17:33:27 · 268 阅读 · 0 评论 -
Netty优雅退出机制shutdownGracefully源码分析
使用netty开发的小伙伴对netty下面这两句代码应该非常熟悉了,netty的优雅退出机制bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();首先看其中的shutdownGracefully()方法,其中的参数quietPeriod为静默时间,timeout为截止时间,第三个参数是TimeUnit uni...原创 2020-05-02 16:16:02 · 869 阅读 · 0 评论 -
Netty新连接的接入
新连接的建立可以分为三个步骤1.检测到有新的连接2.将新的连接注册到worker线程组3.注册新连接的读事件检测到有新连接的接入我们已经知道,当服务端启动后,服务端channel已经注册到boss reactor线程中,reactor不断检测有新的事件,直到检测出有accept事件发生NioEventLoop.java private void processS...原创 2020-05-01 21:16:40 · 169 阅读 · 0 评论 -
NioEventLoopGroup的初始化
NioEventLoopGroup我们先看下类图NioEventLoopGroup workGroup = new NioEventLoopGroup();public NioEventLoopGroup() { this(0); } public NioEventLoopGroup(int nThreads) { this(nTh...原创 2020-05-02 15:38:19 · 357 阅读 · 0 评论