zoukankan      html  css  js  c++  java
  • 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)

    }

     

  • 相关阅读:
    mirco新建proto流程
    Ubuntu默认防火墙安装、启用、配置、端口、查看状态相关信息
    Rails核心组件
    Ruby中文乱码问题
    python str转dict
    SQLserver AwaysOn日志文件过大,处理办法
    MySQL的一些小细节
    mysql删除表中重复值
    可恶的自增长标识符
    reset slave all更彻底
  • 原文地址:https://www.cnblogs.com/ttaall/p/11991300.html
Copyright © 2011-2022 走看看