全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

java培训教程基础篇-Java开发中的I/O模型原理解析

发布时间:2022-03-21 17:52:00
发布人:java

  本期java培训教程基础篇-Java开发中的I/O模型原理解析,I/O是 input/output的缩写即输入输出端口。每个设备都会有一个专用的I/O地址用来处理自己的输入输出信息。常见的五种IO模型分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。

  接下来我们具体了解Java 开发中的I/O模型:

  1、BIO(Blocking IO)

  BIO是同步阻塞模型一个客户端连接对应一个处理线程。在BIO中accept和read方法都是阻塞操作,如果没有连接请求accept方法阻塞;如果无数据可读取read方法阻塞。

1

  2、NIO(Non Blocking IO)

  NIO是同步非阻塞模型服务端的一个线程可以处理多个请求,客户端发送的连接请求注册在多路复用器Selector上服务端线程通过轮询多路复用器查看是否有IO请求有则进行处理。

2

  NIO的三大核心组件:

  (1)Buffer:用于存储数据底层基于数组实现,针对8种基本类型提供了对应的缓冲区类。

  (2)Channel:用于进行数据传输面向缓冲区进行操作支持双向传输,数据可以从Channel读取到Buffer中也可以从Buffer写到Channel中。

  (3)Selector:选择器当向一个Selector中注册Channel后,Selector 内部的机制就可以自动不断地查询(Select)这些注册的Channel是否有已就绪的 I/O 事件(例如可读,可写,网络连接完成等),这样程序就可以很简单地使用一个线程高效地管理多个Channel也可以说管理多个网络连接,因此Selector也被称为多路复用器。

  当某个Channel上面发生了读或者写事件,这个Channel就处于就绪状态,会被Selector监听到,然后通过SelectionKeys可以获取就绪Channel的集合进行后续的I/O操作。

3

  Epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,获取事件的时候它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。

  3、AIO(NIO 2.0)

  AIO是异步非阻塞模型一般用于连接数较多且连接时间较长的应用,在读写事件完成后由回调服务去通知程序启动线程进行处理。与NIO不同,当进行读写操作时只需直接调用read或write方法即可。这两种方法均为异步的对于读操作而言,当有流可读取时操作系统会将可读的流传入read方法的缓冲区并通知应用程序;对于写操作而言当操作系统将write方法传递的流写入完毕时操作系统主动通知应用程序。可以理解为read/write方法都是异步的完成后会主动调用回调函数。

  以上就是本期详细的java培训教程内容介绍了,如果您对java技术非常感兴趣,可以来了解一下千锋教育提供的java培训课程,千锋教育在全国20多所城市均设有教学基地,欢迎同学们前来咨询了解。

相关文章

今日头条开通原创需要什么条件?今日头条开通原创要求介绍

2023-09-19

短视频发布在哪个平台收益最好?短视频平台收益分析

2023-09-19

怎么剪辑短视频赚钱?短视频赚钱方法

2023-09-19

短视频怎么靠播放量赚钱?短视频赚钱方式介绍

2023-09-19

今日头条视频怎么赚钱?头条号赚钱方法汇总

2023-09-19

今日头条展现量是什么?今日头条展现量规则分析

2023-09-19
在线咨询 免费试学 教程领取