netty 入门

netty 入门

guthub: netty 入门

使用Java NIO就可以进行高性能网络编程,但是利用jdk原生的NIO API的话,在编程的时候必须很小心,需要自己来规避一些可能的异常情况,如:epoll bug问题就是其中之一,理论上想Selector注册的所有Channel都没有IO操作的话,Selector.select()将会被阻塞,直至有Channel有IO操作,但是epoll bug可能会使得即使没有Channel进行IO操作的时候,执行select()被阻塞的线程也会被唤醒,从而使得CPU空转,造成资源浪费; 另外利用原生NIO编程的话,代码复杂繁重,导致编写的代码非常不简洁,代码多了不可避免的增大了引入新bug的可能性。

在这种情况下,大神们设计了netty框架,它基于Java NIO,但是对Java 原生的nio进行了封装,并且想人所想,对一些易引入bug的地方提前做了规避;简化了网络编程,降低其复杂程度;代码少了,引入bug的可能性也就少了。总的来说,netty框架就是在网络编程的时候,替我们把一些脏活累活给承包了,然后使得程序员们可以以一种很舒服的方式来进行网络编程。当然了,即使不适用netty框架,仅仅使用Java NIO也是可以编写一个优秀的高性能的网络程序,但是对于我这种没有丰富NIO编程经验的新手而言,还是喜欢站在巨人的肩膀上往前走。

1 编写Server程序

1.声明两个线程池:group,worker,group负责接收客户端的连接,worker负责处理客户端过来的请求

EventLoopGroup group = new NioEventLoopGroup();
EventLoopGroup worker = new NioEventLoopGroup();

2.创建一个启动类对象

ServerBootstrap serverBootstrap = new ServerBootstrap();

3.借助ServerBootstrap为服务端程序添加相关配置

//绑定线程池
serverBootstrap.group(group,worker)
    //绑定服务端的Channel
    .channel(NioServerSocketChannel.claa)
    //绑定本地端口8888
    .localAddress(new InetSoc
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值