java netty nio_JAVA_NIO 与Netty框架

Java New IO

基于双向读写通道Channel和缓冲Buffer

非阻塞式  (线程处理读写时依然可以非阻塞的做其他事情)

选择器Selectors   单个线程用于监听多个通道的事件(连接事件,读取事件等)

Netty框架 通信原理

4afe8c6c66c8a537ee3f57537312f133.png

Java NIO API Demo

Selector感兴趣的事件

SelectionKey.OP_ACCEPT();

SelectionKey.OP_CONNECT();

SelectionKey.OP_READ();

SelectionKey.OP_WRITE();

init()

创建Selector对象

Selector selector=Selector.open();

创建Channel通道,设置非阻塞

ServerSocketChannel channel=ServerSocketChannel.open();

channel.configureBlocking(false);

绑定通道,给上端口

ServerSocket socket=channel.socket();

socket.bind(new InetSocketAddress(port));

向Selector中注册感兴趣事件

socket.register(selector,SelectionKey.OP_ACCEPT);

处理事件

Listen()

while(true){

当注册事件到达时方法返回,否则一直阻塞

selector.select();

用迭代器接收注册事件

Iterator i=selector.selectedKeys().iterator();

处理每一个事件

While(i.hasNext()){

SelectionKey key=i.next();

i.remove();

If(key.isAcceptable()){

}else if(key.isReadable()){

}

}

read(SelectionKey key)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值