NIO类库的简介

缓冲区Buffer

Buffer是一个对象,该类是个抽象类,主要包含一些要写入或者要读出的数据。在INO类库中加入Buffer对象,体现了新库与原来的I/O的区别。

在NIO库中,所有的数据都是用缓冲区处理的。在读取数据时,它是直接读取到缓冲区中的,在写入数据时,写入到缓冲区中。任何时候该访问NIO中的数据,都是通过缓冲区进行操作。

缓冲区实质上是一个数组,通常是一个byteBuffer。一个缓冲区不仅仅是一个数组,缓冲区还提供了对数据的结构化访问以及维护读写位置等信息。

通道Channel

channel是一个通道,网络数据通过channel进行读写。通道和流的不同之处在于通道是双向的,流只是在一个方向上移动,而通道可以用于读写或者二者的同时进行。

channel是全双工的,所以它可以比流更好的映射底层操作系统的API.

主要分为两大类:

    用于网络读写的selectablechannel

    用于文件操作的filechannel

    serversocketchannel和socketchannel都是selectablechannel的子类

多路复用器selector

它是Java NIO编程的基础。

selector会不断地轮询注册在其上的channel,如果某个channel上发生了读或者写的事件,这个channel就处于就绪状态,会被selector轮询出来,然后通过selectionkey可以获取就绪channel的集合,在进行后续的I/O操作。

一个多路复用器selector可以同时轮询多个channel,由于jdk使用;了epoll()代替传统的select实现,所以它并没有限制最大链接句柄。一个线程负责selector的轮询,就可以介入成千上万的客户端。

 

【1】NIO入门案例客户端的代码具体实现以及详细注释
https://blog.csdn.net/wildwolf_001/article/details/81102953
【2】NIO入门案例服务端的代码具体实现以及详细注释
https://blog.csdn.net/wildwolf_001/article/details/81085938
【3】NIO入门案例之分析NIO服务端序列图
https://blog.csdn.net/wildwolf_001/article/details/81069180

【4】NIO入门案例使用netty最新版本框架代码实现及详细注释
https://blog.csdn.net/wildwolf_001/article/details/81132896

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞流2023

小主,破费了,回头请你喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值