动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

搞定Java NIO编程这件小事

04-26 09:32 643浏览
举报 T字号
  • 大字
  • 中字
  • 小字

java.nio全称java non-blocking IO,是指jdk1.4 及以上版本里提供的新API(New IO),为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。Java NIO实际上是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。

随着NIO的引入,最大限度的满足了Java程序I/O的需求。在NIO中有三大核心组件:  Channel,  Buffer,  Selector,传统的IO面向流的,每次可以从流中读取一个或多个字节,只能向后读取,不能向前移动,NIO是面向缓冲区的,把数据读到一个缓冲区中,可以在缓冲区中向前/向后移动,增加了程序的灵活性。在NIO中,所有的数组都需要通过Channel传输,通道可以直接将一块数据映射到内存中。Channel是双向的,不仅可以读取数据, 还能保存数据,程序不能直接读写Channel通道,Channel只与Buffer缓冲区交互。

java.nio 包定义了缓冲区类,这些类用于所有 NIO API。java.nio.charset包中定义了字符集API,java.nio.channels包中定义了信道和选择器 API。每个子包都具有自己的服务提供程序接口(SPI) 子包,SPI 子包的内容可用于扩展平台的默认实现或构造替代实现。

很多刚接触NIO的人,第一眼看到的就是Java相对晦涩的API,比如:Channel,Selector,Socket什么的;然后就是一坨上百行的代码来演示NIO的服务端Demo……瞬间头大有没有?那么就让我们全新推出的NIO视频教程来帮你搞定Java NIO编程这件小事。课程目录如下:

第一章 NIO概述

 1-1 程序读取数据模型   (12:10)

 1-2 NIO与传统IO的区别   (08:36)

第二章 NIO之Buffer

 2-1 缓冲区的常用属性   (13:39)

 2-2 Buffer常用的API   (12:24)

 2-3 演示Buffer的基本操作   (24:01)

 2-4 缓冲区的批量传输   (21:46)

 2-5 缓冲区创建的两种方式   (11:30)

 2-6 缓冲区的复制与分隔   (12:25)

 2-7 直接字节缓冲区   (09:02)

第三章 NIO之Channel

 3-1 Channel概述   (08:08)

 3-2 Scatter与Gather   (15:48)

 3-3 FileChannel内存映射文件   (19:43)

 3-4 FileChannel双向读写   (09:13)

 3-5 FileChannel读写文件时缓冲区固定大小   (05:42)

 3-6 FileChannel通道与通道之间的传输   (06:39)

 3-7 Gather代码演示   (23:04)

 3-8 SeverSocketChannel服务器   (13:17)

 3-9 SocketChannel客户端   (11:17)

 3-10 DatagramChannel数据接收端   (09:05)

 3-11 DatagramChannel数据发送端   (07:30)

 3-12 Pipe管道   (21:58)

第四章 NIO之Selector

 4-1 Selector选择器基础1   (12:35)开始学习

 4-2 Selector选择器基础2   (17:26)

 4-3 SelectionKey选择键常用方法   (14:26)

 4-4 使用选择器1   (12:53)

 4-5 服务器端代码模板   (08:13)

 4-6 使用selector开发服务器端   (20:46)

 4-7 开发客户端   (05:50)

其实,学习Java NIO的关键所在是我们要抛开现象看本质,先分析下NIO是怎么工作的。所有的系统I/O都分为两个阶段:等待就绪和操作。举例来说,读函数,分为等待系统可读和真正的读;同理,写函数分为等待网卡可以写和真正的写。NIO一个重要的特点是:socket主要的读、写、注册和接收函数,在等待就绪阶段都是非阻塞的,真正的I/O操作是同步阻塞的(消耗CPU但性能非常高)。

当然,Java NIO也不是十全十美的,并发程度不高或者局域网环境下NIO并没有显著的性能优势。但对于其他环境下的Java NIO编程,毫无疑问是独具优势的,而我们学习动力节点在线的课程的目的就是能够妥善地使用Java NIO编程,通过理解课程中诠释的一些NIO的思想和设计理念以及应用场景,讲Java NIO编程使用起来得心应手。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵345
程序员代码小兵345

44篇文章贡献168626字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

JavaWeb的3大组件

代码小兵49806-11 15:28

全面解析Cookie技术

代码小兵49806-11 15:51

浅谈JavaWeb架构演变

代码小兵49806-11 16:22

探讨Web开发中的Session存储与管理

代码小兵51603-29 17:28

JavaScript基础知识

 暴风城-小飞04-06 20:49

发评论

举报

0/150

取消