都2020年了,你还不懂Netty吗?看完这篇文章,再不懂我就哭了

本文详细介绍了Netty框架的起源、版本区别以及其相较于传统NIO的优势。通过分析Netty3的源码,阐述了Netty如何通过分离Boss和Worker线程池,实现高效的网络通信。文中通过类比,清晰地描绘了Netty中Boss线程负责接收连接,Worker线程处理业务的机制,帮助读者深入理解Netty的内部工作原理。
摘要由CSDN通过智能技术生成

Netty源码分析

  1、Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

  2、目前netty有3个版本netty3、netty4、netty5。3个版本的内容有所不同。neety3是核心的代码介绍。相对于netty4、和netty5的复杂性来说。netty3的源码是值得学习的。我这里解析了netty3的一些源码,仅供大家理解,也是为了方便大家理解做了很多简化。不代表作者的开发思路。

  3、我们先来看一张图(这张图是我在学习源码的时候扣的,哈哈)

 一、传统NIO流

  

都2020年了,你还不懂Netty吗?看完这篇文章,再不懂我就哭了

 

  1)一个线程里面,存在一个selector,当然这个selector也承担起看大门和服务客人的工作。

  2)这里不管多少客户端进来,都是这个selector来处理。这样就就加大了这个服务员的工作量

  3)为了加入线程池,让多个selector同时工作,当时目的性都是一样的。

  4)虽然看大门的和服务客人的都是服务员,但是还是存在差别的。为了更好的处理多个线程的问题。所以这里netty就诞生了。

 二、netty框架

都2020年了,你还不懂Netty吗?看完这篇文章,再不懂我就哭了

 

  理解:

  1)netty3的框架也是基于nio流做出来的。所以这里会详细介绍netty3框架的思路

  2)将看门的服务员和服务客人的服务员分开。形成两块(也就是2个线程池,也就是后面的boss和worker)

  3)当一个客人来的时候,首先boss,进行接待。然后boss分配工作给worker,这个,在两个线程池的工作下,有条不乱。

  4)原理:就是将看大门的selector和服务客人的selector分开。然后通过boss线程池,下发任务给对应的worker

  4、netty3源码分析

  1)加入对应的jar包。我这里为了了解源码用的是netty3的包。

    <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty</artifactId>
            <version>3.10.6.Final</version>
        </dependency>

  2)目录结构

都2020年了,你还不懂Netty吗?看完这篇文章,再不懂我就哭了

 

  说明:

  a、NettyBoss、NettyWork是针对于selector做区分。虽然他们很多共性,我这里为了好理解,并没有做抽象类(忽略开发思路)。

  b、ThreadHandle是用来初始化线程池和对应的接口。

  c、Start为启动类

  3)NettyBoss(看大门的服务员,第一种线程selector)

package com.troy.application.netty;

import java.io.IOException;
import java.nio.channels.*;
import java.util.Iterator;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;

public class NettyBoss {

    //线程池
    public fin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值