Java的I/O演进之路 Java I/O:发展历程(2)
导读:Java的I/O演进之路,,并且对原 java.io 包中的很多类进行改写。 NIO 有三大核心部分: Channel( 通道) ,Buffer( 缓冲区), Selector( 选择器) Java NIO 的非阻塞模式 ,使一个线程 从某通
Java的I/O演进之路
,并且对原 java.io 包中的很多类进行改写。
NIO 三大核心原理示意图
Buffer缓冲区
缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。
这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。
相比较直接对数组的操作,Buffer API更加容易操作和管理。
Channel(通道)
Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。
但流的(input或output)读写通常是单向的。
通道可以非阻塞读取和写入通道,通道可以支持读取或写入缓冲区,也支持异步地读写。
Selector选择器
Selector是 一个Java NIO组件,可以能够检查一个或多个 NIO 通道,并确定哪些通道已经准备好进行读取或写入。
这样,一个单独的线程可以管理多个channel,从而管理多个网络连接,提高效率

- 每个channel 都会对应一个 Buffer
- 一个线程对应Selector , 一个Selector对应多个 channel(连接)
- 程序切换到哪个 channel 是由事件决定
- Selector 会根据不同的事件,在各个通道上切换
- Buffer 就是一个内存块 , 底层是一个数组
- 数据的读取写入是通过 Buffer完成的, BIO 中要么是输入流,或者是输出流, 不能双向,但是 NIO 的 Buffer 是可以读也可以写。
- Java NIO系统的核心在于通道(Channel)和缓冲区 (Buffer)。通道表示打开到 IO 设备(例如:文件、 套接字)的连接。若需要使用 NIO 系统,需要获取 用于连接 IO 设备的通道以及用于容纳数据的缓冲 区。然后操作缓冲区,对数据进行处理。简而言之,Channel 负责传输, Buffer 负责存取数据
相关阅读
-
网站需要怎么优化比较好 网站建设流程分享
为大家介绍网站需要怎么优化比较好和网站建设流程分享方面的内容,一起来了解了解吧。 网站优化是一种搜索引擎推广方法,是通过有效的方式获得较好的自然排名,不仅费用较低,而且排
-
数据库主键是什么 数据库中的唯一标识:主键的作用及重要性
如果想了解数据库主键是什么及数据库中的唯一标识方面的内容,具体介绍如下: 数据库主键(Primary Key)是关系型数据库表中的一个特殊字段,它具有以下作用和特点: 唯一性 :主键字段的
-
公司做网络推广哪个网站好 推广平台网站推荐
文章摘要:公司做网络推广哪个网站好和推广平台网站推荐方面的讲解,具体内容如下: 许多企业都如今面临了同一个问题,企业相应做网络推广,可是尝试过一些平台后发现效果还是很差。
-
什么是缓存 策略有哪些?
关于这方面的知识你知道吗?什么是缓存的话题,下面小编为您详细解答 什么是缓存? 缓存就像是一个超快速的存储区域,保存了计算机或手机经常使用的内容的副本,这样可以在不访问较慢


