JAVA_NIO 与Netty框架

Java New IO

  1. 基于双向读写通道Channel和缓冲Buffer
  2. 非阻塞式  (线程处理读写时依然可以非阻塞的做其他事情)
  3. 选择器Selectors   单个线程用于监听多个通道的事件(连接事件,读取事件等)

 

 

Netty框架 通信原理

 

 

 

Java NIO API Demo

Selector感兴趣的事件

SelectionKey.OP_ACCEPT();

SelectionKey.OP_CONNECT();

SelectionKey.OP_READ();

SelectionKey.OP_WRITE();

 

 

 init()

  1. 创建Selector对象

Selector selector=Selector.open();

  1. 创建Channel通道,设置非阻塞

ServerSocketChannel channel=ServerSocketChannel.open();

channel.configureBlocking(false);

  1. 绑定通道,给上端口

ServerSocket socket=channel.socket();

socket.bind(new InetSocketAddress(port));

  1. Selector中注册感兴趣事件

socket.register(selector,SelectionKey.OP_ACCEPT);

  1. 处理事件

 

Listen()

while(true){

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

selector.select();

  1. 用迭代器接收注册事件

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

  1. 处理每一个事件

While(i.hasNext()){

SelectionKey key=i.next();

i.remove();

 

If(key.isAcceptable()){

}else if(key.isReadable()){

}

}

 

read(SelectionKey key)

}

 

 

posted @ 2019-12-05 19:12  六小扛把子  阅读(235)  评论(0编辑  收藏  举报