netty 学习笔记(一)

本文介绍了Netty中的事件循环组,包括bossGroup和workerGroup的角色,ServerBootstrap的作用,以及handler和childHandler的处理方式。重点讲解了ChannelFuture的异步特性,ChannelOption和AttributeKey的区别,并强调了EventLoop与Thread的绑定关系,确保了线程安全。同时,提出了在业务开发中避免Handler中有耗时操作,建议使用线程池或指定EventExecutorGroup来处理。
摘要由CSDN通过智能技术生成

事件循环组【实际是一个死循环】

bossGroup:负责处理连接

workerGroup:负责具体工作

ServerBootstrap:服务引导启动器,NIO的辅助工具

handler方法是为bossGroup提供的处理方式

childHandler方法是为workGroup提供的处理方式

ChannelFuture

异步操作执行完,没有等待执行完成再返回,直接返回的Future。

.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 200)

.attr(AttributeKey.newInstance("name"), "godme");

option就好比object,一个对象的属性必然是可列举的。

attr就好比map,只是一个容器,可有可无,灵活多变。

根本来看,option是既有程序的控制参数,控制已有的,不受我们操作的底层流程。

因而可以枚举,肯定可以设置,只是参数个数的问题。

但是attr是我们自己程序中用来在流程中传递元素的手段,底层代码必定用不上,个数、类型也未可知。

它就是我们附带信息并传递信息的一个手段,类似于session。
 


public class TestServer {

    public static void main(String[] args) throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workerGroup = new NioEventLoopGroup();

        try {
            ServerBootstrap serverBootstrap = new ServerBootstrap();
            serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).
                    childHandler(new TestServerInitializer());

            ChannelFuture channelFuture = serverBootstrap.bind(8899).sync();
            channelFuture.channel().closeFuture().sync();
        } finally {
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
        }
    }
}



public class TestServerInitializer extends ChannelInitializer<SocketChannel>{

    @Override
    protected void initChannel(SocketChannel ch) throws Exception {
        ChannelPipeline pipeline = ch.pipeline();

        pipeline.addLast("httpServerCodec", new HttpServerCodec());
        pipeline.addLast("testHttpServerHandler", new TestHttpServerHandler());
    }
}


public class TestHttpServerHandler extends SimpleChannelInboundHandler<HttpOb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值