找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[ JAVA初中级开发 ] [守望者 java初中级视频]22_javaNIO,AIO编程

2014-08-18 16:01| 发布者: zhouy | 查看: 18326 | 收藏

摘要: 内容简介:本课程介绍阻塞,非阻塞,同步和异步的基本概念,介绍javaNIO,AIO的基本原理以及一般的开发流程,最后通过实例练习NIO,AIO的基本实现.

一.基本概念解析


1)阻塞和非阻塞:


阻塞和非阻塞是进程在访问数据的时候,数据内是否准备就绪的一种处理方式,当数据没有准备的时候  阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里

非阻塞:当我们的进程访问我们的数据缓冲区的时候  数据没有准备好的时候   直接返回 不需要等待.数据有的时候 也直接返回.


2)同步和异步的方式:


同步和异步都是基于应用程序和操作系统处理IO时间锁采用的方式.比如同步应用程序要直接参与IO读写的操作,异步:所有的IO读写交给操作系统去处理同步的方式在处理IO事件的时候 必须阻塞在某个方法上面等待我们的IO时间完成(阻塞IO事件或则通过轮询IO事件的方式),对于异步来说,所有的IO读写都交给了操作系统  这个时候  我们可以去做其他的事情  并不需要去完成真正的IO操作,当操作完成IO后 给我们的应用程序一个通知就可以的,

同步:1)阻塞到IO事件  阻塞到read  或则 write.  这个时候我们就完全不能做自己的事情.让读写方法加入到线程里面   然后阻塞线程来实现.对线程的性能开销比较大.

 

3)IO事件的轮询  --多路复用技术(select模式)


读写事件交给一个单独的线程来处理,这个完成IO事件的注册供,还有就是不断的去轮询我们的读写缓冲区  看是否有数据准备好。 通知我们通知相应读写线程这样的话  以前的读写线程就可以做其他的事情  这个时候阻塞的不是所有的IO线程   阻塞的select这个线程.

 

    Client                 Select  管家                BOSS

   当客人来的时候,就给管家说 我来了,管家得到这个注册信息后, 给BOSS说  我这里有一个或则多个客人  ,BOSS你去给某人A

这件东西,给另外人B这样东西。这个时候  客人是可以去做自己的事情的,比如看看花园等等, 当管家知道boss给他任务后 他就是去找对应的某人  告诉他boss给他某样东西。(根据我们的注册信息)

 

 

二.Java IO模型


BIO:JDK1.4以前我们使用都是BIO 阻塞IO

阻塞到我们的读写方法,阻塞到线程来提供性能.对于线程的开销本来就是性能的浪费.

NIO:jdk1.4  linux 多路复用技术(select模式)  实现IO事件的轮询方式:同步非阻塞的模式.这个种方式目前是主流的网络通信模式.

Minanetty    mina2.0    netty5.0---网络通信框架.比我直接写NIO要容易些  并且代码可读性更好

AIO:jdk1.7 (NIO2) 才是实现真正的异步aio,学习linux epoll模式

AIO使用的比较少,大家可以认真的学习一些思想

 

小结:1)BIO阻塞的IO

     2NIO  select+非阻塞  同步非阻塞  

     3)异步非阻塞IO


3.NIO AIO原理的解读


对于网络通信而言NIOAIO并没有改变网通通信的基本步骤,只是在其原来的基础上(serverscoket,socket)做了一个改进.

 

Socket     <----建立连接需要三次握手----->           serversocket

 

对于三次握手的方式建立稳定的连接性能开销比较大.解决方案从思想上来说比较容易  就是减少连接的次数.对我们的读写通信管道进行一个抽象.                               

 

4.NIO原理

 

通过selctor(选择器)就相当管家 ,管理所有的IO事件

 Connction   accept    客服端和服务端的读写.-----IO事件

 

selctor(选择器)如何进行管理IO事件

IO事件注册给我们的选择器的时候   选择器会给他们分配一个key(可以简单的理解成一个时间的标签) 当IO事件完成过通过key值来找到相应的管道  然后通过管道发送数据和接收数据等操作.

 

数据缓冲区:

通过bytebuffer,提供很多读写的方法   put()   get()

 

服务端:ServerSocketChannel  

客服端:  SocketChannel  

选择器:  Selector  selector=Select.open();这样就打开了我们的选择器.


4.Selectionkey:


  可以通过它来判断IO事件是否已经就绪.

  key.isAccptable:是否可以接受客户端的连接

  Key.isconnctionable:是否可以连接服务端

  Key.isreadable():缓冲区是否可读

  Key.iswriteable():缓冲区是否可写


5.如何获得事件的keys


Selectionkey  keys=  Selector.selectedkeys();


6.如何注册


 channel.regist(Selector,Selectionkey.OP_Write);

 channel.regist(Selector,Selectionkey.OP_Read);

 channel.regist(Selector,Selectionkey.OP_Connct);

 channel.regist(Selector,Selectionkey.OP_Accept);

 

6.AIO:


服务端:AsynchronousServerSocketChannel

客服端:AsynchronousSocketChannel\

用户处理器:CompletionHandler接口,这个接口实现应用程序向操作系统发起IO请求,当完成后处理具体逻辑,否则做自己该做的事情.


java NIO,AIO编程_01:


java NIO,AIO编程_02:


java NIO,AIO编程_03:


java NIO,AIO编程_04:


java NIO,AIO编程_05:

会员评论  

已有3参与评论

  • 视频内容不错,感觉质量可以,但是希望作者在上传的时,能先做一个视频加速的处理,因为播放的速度有点慢了!
    何人说

    2016-03-28 20:04
  • 讲解的不错,希望以后内容文档事先能够整理好,一边讲解一边打字速度比较慢。最后希望能提供文档下载。
    WebbDong

    2016-09-10 15:28
  • 很有收获!请问,能提供课件下载吗?
    StoneBridge

    2017-02-22 21:13

赞过此文的人

推荐阅读

[守望者 算法视频]01_数据存储(链表与数组)
[守望者 算法视频]01_数据存储(链表与
本章重点介绍数据的在计算机的存储方式 :连续存储(数组)与链式存储,同时
[守望者   java初中级视频]22_javaNIO,AIO编程
[守望者 java初中级视频]22_javaNIO,
内容简介:本课程介绍阻塞,非阻塞,同步和异步的基本概念,介绍javaNIO,AIO
[守望者   java初中级视频]00_java初中级课程学习导航
[守望者 java初中级视频]00_java初中
内容简介:全面贾少这套视频课程学习需要具备的理论基础,以及适合的学习人群
【守望者 linux项目】linux下的FTP服务器与客户端,作者 灯下野狐 ...
【守望者 linux项目】linux下的FTP服务
本项目是一个完整的FTP服务器及FTP客户端设计示例,对于需要学习网络编程项目
【守望者 游戏项目】基于cocos2d-x的跑酷游戏项目教程
【守望者 游戏项目】基于cocos2d-x的跑
Cocos2d-x跑酷游戏项目教程Cocos2d-x跑酷游戏项目教程cocos2d-x特性cocos2
【守望者 linux项目】mini WEB服务器设计
【守望者 linux项目】mini WEB服务器设
以下是曾经Watchmen一个朋友学习网络编程时设计的一个简单的MiniWEB服务器。
【守望者 观点】智能路由和Wi-Fi探针是一对好基友
【守望者 观点】智能路由和Wi-Fi探针是
智能路由与Wifi探针可以收集用户行为,同时可以收集用户MAC地址,还可以跟踪
[守望者 linux视频]01_开发工具与开发平台
[守望者 linux视频]01_开发工具与开发
本课主要介绍gcc,gdb等系列开发工具,开始编写程序之旅。要求理解Linux开发平
[守望者 算法视频]08_数据查找_hash算法
[守望者 算法视频]08_数据查找_hash算
守望者:普通逐个查找O(n),组织方式可以无序的数组或者普通链表。已经排序的
【解读】什么样性格的人会被夸性格好
【解读】什么样性格的人会被夸性格好
守望者:性格决定命令。好的性格意识着给别人面子,能接受别人装逼,而且以上

行业聚焦  面试交流  职位推荐  开发视频   技术交流  腾讯微博  新浪微博

友情链接:课课家教育  阿里云  鲜果  W3Cfuns前端网  中国企业家  环球企业家  投资界  传媒梦工场  MSN中文网  Android开发者社区  cnbeta  投资中国网  又拍云存储  美通说传播  IT茶馆  网商在线  商业评论网  TechOrange  IT时代周刊  3W创新传媒  开源中国社区  二维工坊  Iconfans  推酷  智能电视网  FreeBuf黑客与极客  财经网  DoNews  凤凰财经  新财富  eoe移动开发者社区  i黑马  网易科技  新浪科技  搜狐IT  创业家  创业邦  腾讯财经  福布斯中文网  天下网商  TechWeb  雷锋网  新浪创业  和讯科技  品途O2O  极客公园  艾瑞网  抽屉新热榜  卖家网  人民网通信频道  拉勾网  创新派  简单云主机  

手机版|黑名单|守望者在线 在线教育 linux 高级程序设计 C/C++ 大数据 ( 蜀ICP备14029946号

成都守望者科技有限公司 © 2013-2016 All Rights Reserved