Java教程:Netty知识点详解(九)

开课吧开课吧锤锤2021-02-23 15:32

近年来,随着云计算、大数据等热门技术的发展和普及,Java在企业中越来越受到重视,公司对于Java人才需求也是每年都在增长,对于这样热门的行业,很多人都是心动的,那么对于如何学习,怎么提高Java的技术,那就来看看本篇文章吧。

erverBootstrap与 ServerBootstrap 属性配置分析

继承体系:

Java

入口代码:

//2.创建服务端启动引导/辅助类:ServerBootstrap

ServerBootstrap b = new ServerBootstrap();

//3.给引导类配置两大线程组,确定了线程模型

b.group(bossGroup, workerGroup)

    // (非必备)打印日志

    .handler(new LoggingHandler(LogLevel.INFO))

    // 4.指定 IO 模型

    .channel(NioServerSocketChannel.class)

    .childHandler(new ChannelInitializer<SocketChannel>() {

        @Override

        public void initChannel(SocketChannel ch) {

            ChannelPipeline p = ch.pipeline();

            //5.可以自定义客户端消息的业务处理逻辑

            p.addLast(new HelloServerHandler());

        }

    });

Bootstrap bootstrap = new Bootstrap();

bootstrap.group(eventLoopGroup)

    .channel(NioSocketChannel.class)

    .handler(new ChannelInitializer<SocketChannel>() {

        @Override

        protected void initChannel(SocketChannel ch) throws Exception {

            ChannelPipeline pipeline = ch.pipeline();

            pipeline.addLast(new StringDecoder(CharsetUtil.UTF_8));

            pipeline.addLast(new StringEncoder(CharsetUtil.UTF_8));

            pipeline.addLast(new SomeSocketClientHandler());

        }

    });

ServerBootstrap与 Bootstrap 都是启动配置类,唯一不同的是,ServerBootstrap是服务端的启动配置类,Bootstrap 则是客户端的启动配置类,主要用于绑定我们创建的 EventLoopGroup,指定 Channel 的类型以及绑定 Channel 处理器等操作,主要做的都是给 ServerBootstrap与 Bootstrap 的属性赋值操作,所以称其为配置类。可以进入 group() 方法里看一眼:

public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup) {

    super.group(parentGroup);

    if (childGroup == null) {

        throw new NullPointerException("childGroup");

    }

    if (this.childGroup != null) {

        throw new IllegalStateException("childGroup set already");

    }

    this.childGroup = childGroup;

    return this;

}

其他的方法也是一样,感兴趣可以自己进去看看。这里只是初始化,都是为了后面的操作做准备。

以上内容由开课吧老师敖丙提供,更多Java教程尽在开课吧广场Java教程频道。更多免费课程可以关注公众号“码农集散地”

有用
分享