Android开发进阶之NIO非阻塞包(五)
来源:互联网 发布:中航资本股东数据 编辑:程序博客网 时间:2024/06/15 20:40
有关Android NIO的注意点和重点今天Android123着重分析下上次 Android开发进阶之NIO非阻塞包(四) 一文中提到的不足地方改进。由于目前国内很多人资料书籍编写人员没有通过NIO实现服务器的经验,导致了很多例子中存在严重的错误,由于大多数例子为Echo这样的单次交互以及数据量较小所以反映不出问题的所在。
1. 读和写应该分开,NIO使用的是异步的方法但不等于说不会阻塞,在上面的例子中我们可以看到 判断 key.isReadable() 时,对于这个SelectionKey关联的SocketChannel尽量不要使用写入数据量过多时ByteBuffer使用hasRemaining这样的方法,NIO每次读写不一定全部要把数据读完在一次Selector时。
2. 对于上面的解决方法我们可以继续关注感兴趣的事件,比如说使用interestOps方法,而很多资料中均使用了错误的继续用Selector的register方法继续注册事件,这样没有发生错误的原因是每次注册时会替换上次的这个key注册的事件,比较侥幸,从效率上讲还会判断这个key上次注册的是什么事件,并不是一种正统的方法。
3. 我们可以继续判断写入事件,比如key.isWritable,在写入时来处理发送数据。这样可以应对很多低速网络时产生的异常。
有关的细节还有很多,下一次Android开发网总结出常见的问题,并给大家一个较科学完善的框架,减少不必要的麻烦产生。
- Android开发进阶之NIO非阻塞包(五)
- Android开发进阶之NIO非阻塞包
- Android开发进阶之NIO非阻塞包(一)
- Android开发进阶之NIO非阻塞包(二)
- Android开发进阶之NIO非阻塞包(三)
- Android开发进阶之NIO非阻塞包(四)
- Android开发进阶之NIO非阻塞包(六)
- Android开发进阶之NIO非阻塞包(七)
- Android开发进阶之NIO非阻塞包(八)
- Android开发进阶之NIO非阻塞包
- Java 之NIO(五) - 非阻塞式网络通信
- Java NIO 之阻塞与非阻塞
- java之非阻塞IO(NIO)
- Java NIO之非阻塞式
- android socket链接 NIO非阻塞方式
- java nio 非阻塞
- java非阻塞nio
- Tomcat性能优化之开启Nio非阻塞模式
- net自带wsdl.exe的用法与参数说明
- LAMP优化
- 结合UIImageView实现图片的移动和缩放
- 检测点1.1
- StarUML 学习
- Android开发进阶之NIO非阻塞包(五)
- wcf简单使用小结
- AspNetPager控件使用
- [B14237-04]Oracle® Database Reference 10g Release 2 (10.2)
- Java EE集群技术初探
- 帖子
- JAVA DOC注释模版设置
- Linux 进程管理
- Apache无法启动解决 the requested operation has failed