JAVA NIO操作类型

JAVA NIO共定义了四种操作类型:OP_READ、OP_WRITE、OP_CONNECT、OP_ACCEPT,分别对应读、写、请求连接、接受连接等网络Socket操作。ServerSocketChannel和SocketChannel可以注册自己感兴趣的操作类型,当对应操作类型的就绪条件满足时OS会通知channel,下表描述各种Channel允许注册的操作类型,Y表示允许注册,N表示不允许注册,其中服务器SocketChannel指由服务器ServerSocketChannel.accept()返回的对象。


image.png

客户端请求连接,服务器端接受连接,客户端与服务器端开始相互发送消息(读写),按这个逻辑上表就容易理解。为了更深入理解,我们可以看看每个操作类型的就绪条件。


image.png

java.nio.channels.SelectionKey类定义了这四种操作类型并提供就绪判断方法:

public final boolean isReadable() {
        return (readyOps() & OP_READ) != 0;
    }
     
public final boolean isWritable() {
        return (readyOps() & OP_WRITE) != 0;
    }    
     
public final boolean isConnectable() {
        return (readyOps() & OP_CONNECT) != 0;
    }  
     
public final boolean isAcceptable() {
        return (readyOps() & OP_ACCEPT) != 0;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    zhisheng_blog阅读 1,142评论 0 7
  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 7,624评论 1 143
  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    编码前线阅读 2,297评论 0 5
  • # Java NIO # Java NIO属于非阻塞IO,这是与传统IO最本质的区别。传统IO包括socket和文...
    Teddy_b阅读 646评论 0 0
  • 一上高楼万里愁 蒹葭杨柳似汀州 溪云初起日沉阁 山雨欲来风满楼 鸟下绿芜秦苑夕 蝉鸣黄叶汉宫秋 行人莫问当年事...
    笙胖_Chou阅读 997评论 0 0