NIO操作类型与就绪条件

使用NIO编程时,对NIO就绪选择的理解,是NIO编程的关键。NIO与传统IO的区别是提供了就绪选择的能力,为原来的阻塞的IO提供了非阻塞的能力,从而为我们提供了用少量的线程数量同时为大量的连接通信的可能。

 

1、操作类型

     NIO的就绪选择共涉及4个操作:OP_READ, OP_WRITE, OP_ACCEPT, OP_CONNECT。客户端对应的通道是SocketChannel,服务端对应的通道是ServerSocketChannel。就绪操作与通道对应关系:

 

  OP_ACCEPTOP_CONNECTOP_WRITEOP_READ
客户端SocketChannel
YYY
服务端ServerSocketChannelY   
服务端SocketChannel  YY

 

    客户端的SocketChannel支持 OP_CONNECT, OP_READ, OP_WRITE三个操作。服务端ServerSocketChannel只支持OP_ACCEPT操作,在服务端由ServerSocketChannel的accept()方法产生的SocketChannel只支持OP_READ, OP_WRITE操作。

 

2、就绪条件

 

OP_ACCEPT就绪条件:

    当收到一个客户端的连接请求时,该操作就绪。这是ServerSocketChannel上唯一有效的操作。

 

OP_CONNECT就绪条件:

    只有客户端SocketChannel会注册该操作,当客户端调用SocketChannel.connect()时,该操作会就绪。

 

OP_READ就绪条件:

    该操作对客户端和服务端的SocketChannel都有效,当OS的读缓冲区中有数据可读时,该操作就绪。

 

OP_WRITE就绪条件:

    该操作对客户端和服务端的SocketChannel都有效,当OS的写缓冲区中有空闲的空间时,该操作就绪。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值