Java NIO——1 NIO简介

其实,当很多人都在认为Java比C或者C++慢,这首先是由于他是一门介于编译和解析的语言,这可能才是他慢的主要原因。但是近年来Oracle公司一直致力于对Jre的解析算法进行优化,使得这一缺点逐渐在缩短。由此,java的慢的弊端跟落在了java io上,大家都知道,其实java底层是没有io实现的,而他采用的是一种本地接口的方式,通过C或者C++编译产生的动态链接库进行实现的,原本的io是一种stream的方式,传输速度比较慢,当作为java程序员,不得不庆幸oracle对java的io进行了重新的审视,在JDK1.4推出了NIO,利用了通道和缓冲区,很好的实现了io同本地系统IO的对接,使得java更进一个里程碑

那为什么要使用NIO呢?

NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。

流与块的比较

面向流 的 I/O: 系统一次一个字节地处理数据。不利的一面是,面向流的 I/O 通常相当慢。

面向块 的 I/O: 系统以块的形式处理数据。 每一个操作都在一步中产生或者消费一个数据块。 按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。

同时,在 JDK 1.4 中原来的 I/O 包和 NIO 已经很好地集成。  java.io.* 已经以 NIO 为基础重新实现了,以使得它可以利用 NIO 的一些特性。例如, 包含以块的形式读写数据的方法。也可以用 NIO 库实现标准 I/O 功能。 例如, 可以容易地使用块 I/O 一次一个字节地移动数据。另外,NIO 还提供了原 I/O 包中所没有的许多好处。

通道和缓冲区(NIO核心)

通道是对原 I/O 包中的流的模拟。到任何目的地(或来自任何地方)的所有数据都必须通过一个 Channel 对象。

缓冲区Buffer 是一个对象,  它包含一些要写入或者刚读出的数据。一个 Buffer 实质上是一个容器对象。发送给一个通道的所有对象都必须首先放到缓冲区中;同样地,从通道中读取的任何数据都要读到缓冲区中。

缓冲区实质上是一个数组。通常它是一个字节数组,但是也可以使用其他种类的数组。但是一个缓冲区不仅仅 是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。

简介写了好多了,都是密密麻麻的文字,希望对NIO有一定的了解,好吧,提交了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值