说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android开发进阶之NIO非阻塞包(五)

HTML文档下载 WORD文档下载 PDF文档下载
Android开发进阶之NIO非阻塞包(五)

作者:Android开发网


  有关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开发网总结出常见的问题,并给大家一个较科学完善的框架,减少不必要的麻烦产生。

像写SQL一样编写Java数据应用 Swift 2.0实战:如何实现从非零下标遍历数组? 手把手教学:在iOS 8中使用Cocoapods 交互技术前沿与应用实战:MDCC虚拟现实专场议程揭晓 解密“攻城狮使用手册” 你会忘了给女朋友打电话吗?为什么会忘? 请问一个IE插件的相关问题 用阿克玛方法对离散点连成光滑曲线应该咋样处理两相邻离散点连线铅垂的情况? php页面有时可以显示,有时不能显示,是什莫问题 请教 FoxPro 5.0中如何将project编译成exe 这个是什么:#define INVALID_HANDLE_VALUE ((HANDLE)(-1)) 请教一个较复杂的sql语句写法 使用notes时,一般人会遇到这样一个问题,请大家帮忙出出主意!(谢谢大家) [提问]关于命名空间的问题 蚊子为什么喜欢扎堆飞在半空中拜托各位大神好像一般都 蚊子究竟可以飞多高大神们帮帮忙 二次函数y=x^2-4x+3的图像交x轴与A.B两 焰色反应的原理 焰色反应的实验操作过程是怎样的?它的原理是什么? 一条直线与直线y=-2分之x-3平行,且与直线y= 光滑直角三角形支架,把一条直角边固定在水平面上,使 求二次函数与X轴焦点坐标式 关于二次函数与X轴焦点坐标问题∵图像顶点坐标(-1 万圣节小礼物:地图显示你喜爱的恐怖电酒香不怕巷子深——中国图书在阿尔及利张杰:中国要做全球贸易体系的捍卫者印尼强烈抗议美国监听 指其违反外交准智利沿海发生6.6级地震 未引发海啸卡佩拉:想让自己打出稳定的表现布朗:斯陶斯卡斯今天很可能复出火箭将在比赛中向摩西-马龙致敬平胸大赛…太凶残了…把牢“三把尺子”超能力引导者杂种之王回到幻想乡吾心无道阴影永恒千岛湖东南湖区旅游喃呢温泉旅游西双版纳民族风情园旅游赖源溶洞旅游武汉万达电影乐园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘