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