JDK1.7升级了NIO类库,升级后的NIO类库被称为NIO 2.0。

Java正式提供了异步文件I/O操作,同时提供了与UNIX网络编程事件驱动I/O对应的AIO。

AIO编程

NIO 2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。

异步通道获取获取操作结果方式:

1.使用java.util.concurrent.Future类表示异步操作的结果;

2.在执行异步操作的时候传入一个java.nio.channels。

操作完成后胡回调CompletionHandler接口的实现类。

NIO 2.0的异步套接字通道是真正的异步非阻塞I/O,对应于UNIX网络编程中的事件驱动I/O(AIO)。

AIO版本TimeServer

主程序:

开启一个线程运行服务,下面是任务类的实现:

CompletionHandler:

public void completed (AsynchronousSocketChannel result, AsyncTimeServerHandler attachment);

public void failed (Throwable exc, AsyncTimeServerHandler attachment)

接收客户端连接的回调类:

读取客户端的回调类:

AIO版本TimeClient

客户端:

客户端回调类:

一点说明

JDK底层通过线程池ThreadPoolExecutor来执行回调通知,异步回调通知类由sun.nio.ch.AsynchronousChannelGroupImpl实现,它经过层层调用,最终回调com.phei.netty.aio.AsyncTimeClientHandler$1.completed方法,完成回调通知。

异步Socket Channel是被动执行对象,我们不需要像NIO编程那样创建一个独立的I/O线程来处理读写操作。对于AsynchronousServerSocketChannel和AsynchronousSocketChannel它们都由JDK底层的线程池负责回调并驱动读写操作。正因为如此,基于NIO 2.0新的异步非阻塞Channel进行编程比NIO编程更为简单。

java aio_Java AIO详解相关推荐

  1. java IO编程详解

    java IO编程详解 一.Socket 1. Sock概述 Socket,套接字就是两台主机之间逻辑连接的端点.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议 ...

  2. java io流详解_一文带你看懂JAVA IO流,史上最全面的IO教学啦

    一.IO流是什么 惯例引用百科的回答流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操作 ...

  3. Java内存溢出详解之Tomcat配置

    Java内存溢出详解 转自:http://elf8848.iteye.com/blog/378805 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError ...

  4. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  5. Java类加载机制详解【java面试题】

    Java类加载机制详解[java面试题] (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数 ...

  6. Java线程池详解学习:ThreadPoolExecutor

    Java线程池详解学习:ThreadPoolExecutor Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) - zhangpeterx的博客 在源码的目录java/util/ ...

  7. Java 线程池详解学习:FixedThreadPool,CachedThreadPool,ScheduledThreadPool...

    Java常用的线程池有FixedThreadPool和CachedThreadPool,我们可以通过查看他们的源码来进行学习. Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) ...

  8. 关于Java的Classpath详解

    关于Java的Classpath详解 Java 的新入门者对classpath往往比较困惑,为何在开发环境中能运行的东东出去就不好,或在外面运行的东东挺溜的进了开发环境就死菜. java的优点就是他是 ...

  9. java异常体系结构详解

    java异常体系结构详解 参考文章: (1)java异常体系结构详解 (2)https://www.cnblogs.com/hainange/p/6334042.html 备忘一下.

最新文章

  1. 华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角
  2. AI设计师“鹿班”核心技术公开:如何1秒设计8000张海报?
  3. mfc 资源视图无法打开RC2104
  4. [转]密码技术-实现数字信封和数字签名
  5. GitHub 被爆开始实名制,以便于执行美国贸易制裁;特斯拉推出超大储能产品Megapack;高通宣布与腾讯游戏达成战略合作……...
  6. 18秋c语言程序设计作业答案,西工大18秋《C语言程序设计》平时作业答案.docx
  7. Java语法基础学习DayNineteen(反射机制)
  8. 利用IDLE对 dem进行批量拼接处理
  9. 在R中使用Primer3和NCBI-BLAST进行高通量引物设计
  10. 商旅业务知识-航信(ETERM)系统
  11. 如何搭建OpenOCD环境基于Window10+Cygwin?
  12. SolidWorks 2023软件安装教程SW2023软件安装包
  13. js 判断是否为 Android IOS IPAD IPHONE 等移动设备访问
  14. 永安在线API安全管控平台正式发布,以情报建立API安全基线
  15. MVG读书笔记——单应矩阵估计这件小事(一)
  16. 计算机网络设计校园网实验报告,计算机网络课程设计实验报告---校园网网络构建方案设计和实现...
  17. SQL Server 2008 序列号
  18. NBTSCAN的使用,查找arp病毒工具。
  19. 解析las文件_点云las文件读取
  20. MOXA串口服务器6450串口引脚图

热门文章

  1. Outlook 2003 的桌面提醒(Desktop Alerts)功能
  2. 电磁场学中亥姆赫兹定理证明过程的理解
  3. 商场促销——策略模式(设计模式)
  4. 程序员的职业规划_从菜鸡到大佬——程序员们,请收下这份职业规划全攻略!...
  5. 用photoshop绘制白衣天使Logo设计
  6. php商城快递插件,php购物系统的插件系列之商品橱窗
  7. 处理DataFrame数据——利用Groupby函数分类汇总数据并转为矩阵
  8. 传统电子地图与水经注下载的谷歌电子地图有何区别
  9. python模拟点击手机_Python Appium 滑动、点击等操作
  10. OUC_SE_Group04_Blog5