java aio_Java AIO详解
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详解相关推荐
- java IO编程详解
java IO编程详解 一.Socket 1. Sock概述 Socket,套接字就是两台主机之间逻辑连接的端点.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议 ...
- java io流详解_一文带你看懂JAVA IO流,史上最全面的IO教学啦
一.IO流是什么 惯例引用百科的回答流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操作 ...
- Java内存溢出详解之Tomcat配置
Java内存溢出详解 转自:http://elf8848.iteye.com/blog/378805 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError ...
- java基础(十三)-----详解内部类——Java高级开发必须懂的
java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...
- Java类加载机制详解【java面试题】
Java类加载机制详解[java面试题] (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数 ...
- Java线程池详解学习:ThreadPoolExecutor
Java线程池详解学习:ThreadPoolExecutor Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) - zhangpeterx的博客 在源码的目录java/util/ ...
- Java 线程池详解学习:FixedThreadPool,CachedThreadPool,ScheduledThreadPool...
Java常用的线程池有FixedThreadPool和CachedThreadPool,我们可以通过查看他们的源码来进行学习. Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) ...
- 关于Java的Classpath详解
关于Java的Classpath详解 Java 的新入门者对classpath往往比较困惑,为何在开发环境中能运行的东东出去就不好,或在外面运行的东东挺溜的进了开发环境就死菜. java的优点就是他是 ...
- java异常体系结构详解
java异常体系结构详解 参考文章: (1)java异常体系结构详解 (2)https://www.cnblogs.com/hainange/p/6334042.html 备忘一下.
最新文章
- 华为鲲鹏产业生态加速算力升级,企业数字化转型在山西吹响号角
- AI设计师“鹿班”核心技术公开:如何1秒设计8000张海报?
- mfc 资源视图无法打开RC2104
- [转]密码技术-实现数字信封和数字签名
- GitHub 被爆开始实名制,以便于执行美国贸易制裁;特斯拉推出超大储能产品Megapack;高通宣布与腾讯游戏达成战略合作……...
- 18秋c语言程序设计作业答案,西工大18秋《C语言程序设计》平时作业答案.docx
- Java语法基础学习DayNineteen(反射机制)
- 利用IDLE对 dem进行批量拼接处理
- 在R中使用Primer3和NCBI-BLAST进行高通量引物设计
- 商旅业务知识-航信(ETERM)系统
- 如何搭建OpenOCD环境基于Window10+Cygwin?
- SolidWorks 2023软件安装教程SW2023软件安装包
- js 判断是否为 Android IOS IPAD IPHONE 等移动设备访问
- 永安在线API安全管控平台正式发布,以情报建立API安全基线
- MVG读书笔记——单应矩阵估计这件小事(一)
- 计算机网络设计校园网实验报告,计算机网络课程设计实验报告---校园网网络构建方案设计和实现...
- SQL Server 2008 序列号
- NBTSCAN的使用,查找arp病毒工具。
- 解析las文件_点云las文件读取
- MOXA串口服务器6450串口引脚图
热门文章
- Outlook 2003 的桌面提醒(Desktop Alerts)功能
- 电磁场学中亥姆赫兹定理证明过程的理解
- 商场促销——策略模式(设计模式)
- 程序员的职业规划_从菜鸡到大佬——程序员们,请收下这份职业规划全攻略!...
- 用photoshop绘制白衣天使Logo设计
- php商城快递插件,php购物系统的插件系列之商品橱窗
- 处理DataFrame数据——利用Groupby函数分类汇总数据并转为矩阵
- 传统电子地图与水经注下载的谷歌电子地图有何区别
- python模拟点击手机_Python Appium 滑动、点击等操作
- OUC_SE_Group04_Blog5