设为首页 加入收藏

TOP

2.4.3 AIO版本时间服务器运行结果
2014-07-09 13:01:16 来源: 作者: 【 】 浏览:136
Tags:2.4.3 AIO 版本 时间 服务器 运行 结果

2.4.3  AIO版本时间服务器运行结果

执行TimeServer,运行结果如图2-15所示。

执行TimeClient,运行结果如图2-16所示。

下面我们继续看下JDK异步回调CompletionHandler的线程执行堆栈。

 

从“Thread-2”线程堆栈中可以发现,JDK底层通过线程池ThreadPoolExecutor来执行回调通知,异步回调通知类由sun.nio.ch.AsynchronousChannelGroupImpl实现,它经过层层调用,最终回调com.phei.netty.aio.AsyncTimeClientHandler$1.completed方法,完成回调通知。由此我们也可以得出结论:异步Socket Channel是被动执行对象,我们不需要像NIO编程那样创建一个独立的I/O线程来处理读写操作。对于AsynchronousServerSocket Channel和AsynchronousSocketChannel,它们都由JDK底层的线程池负责回调并驱动读写操作。正因为如此,基于NIO2.0新的异步非阻塞Channel进行编程比NIO编程更为简单。

本小节我们讲解了JDK1.7提供的新的异步非阻塞I/O(AIO)的用法,由于国内商用的主流Java版本仍然是JDK1.6,因此,本小节不再详细介绍NIO2.0其他新增的特性,如果大家对NIO2.0的异步文件操作等特性感兴趣,可以选择阅读JDK1.7的相关书籍或者查看甲骨文发布的JDK1.7白皮书。

下个小节我们对本章列举的5种I/O进行概念澄清和比较,让大家从整体上掌握这些I/O模型的差异,以便在未来的工作中能够根据产品的实际情况选择合适的I/O模型。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4.2 AIO创建的TimeClient源码分.. 下一篇2.5.1 概念澄清

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)
·C语言指针的定义和使 (2025-12-26 05:21:31)
·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)