【Java.NIO】NIO就绪处理之OP_WRITE

转自: http://blog.csdn.net/zhouhl_cn/article/details/6582435


写就绪相对有一点特殊,一般来说,你不应该注册写事件。写操作的就绪条件为底层缓冲区有空闲空间,而写缓冲区绝大部分时间都是有空闲空间的,所以当你注册写事件后,写操作一直是就绪的,选择处理线程全占用整个CPU资源。所以,只有当你确实有数据要写时再注册写操作,并在写完以后马上取消注册。


当有数据在写时,将数据写到缓冲区中,并注册写事件。

[java]  view plain copy
  1. public void write(byte[] data) throws IOException {  
  2.     writeBuffer.put(data);  
  3.     key.interestOps(SelectionKey.OP_WRITE);  
  4. }  

注册写事件后,写操作就绪,这时将之前写入缓冲区的数据写入通道,并取消注册。

[java]  view plain copy
  1. channel.write(writeBuffer);  
  2. key.interestOps(key.interestOps() & ~SelectionKey.OP_WRITE);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值