前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NIO概述

NIO概述

作者头像
用户4919348
发布2019-04-18 17:16:38
3130
发布2019-04-18 17:16:38
举报
文章被收录于专栏:波波烤鸭波波烤鸭

NIO简介

  NIO也叫(New IO)或者(no-blocking io),是jdk1.4后提供的,主要目的是为了提高速度,和我们前面介绍的’内核空间’和’用户空间’相关。是一个可以替代标准Java IO API的新IO API,提供了与标准IO不同的IO工作方式。

在这里插入图片描述
在这里插入图片描述

NIO和IO的区别

  通过“内核空间”“用户空间”“虚拟内存”等概念的介绍,大家可能会感觉普通IO的性能要差很多,因为要做两次数据复制,其实“旧”的I/O包已经使用NIO重新实现过,即使我们不显式的使用NIO编程,IO的速度也不会很慢。那么专门学习NIO还有必要吗?这我们就要弄清楚IO的场景主要有两个:文件IO网络IO   NIO的作用:在网络IO【非阻塞】中就可以体现出来了!具体怎么体现的后面再详细介绍。

IO

NIO

面向流

面向缓冲

阻塞IO

非阻塞IO

选择器

Buffer和Channel介绍

  在NIO中并不是以流的方式来处理数据的,而是以buffer缓冲区Channel管道配合使用来处理数据。

在这里插入图片描述
在这里插入图片描述

简单理解一下:   Channel管道比作成铁路,buffer缓冲区比作成火车(运载着货物),而我们的NIO就是通过Channel管道运输着存储数据的Buffer缓冲区的来实现数据的处理!要时刻记住:Channel不与数据打交道,它只负责运输数据。与数据打交道的是Buffer缓冲区

角色

特点

说明

buffer

数据

与数据打交道,存取数据

channel

运输

不与数据打交道,它只负责运输存储数据的buffer

  相对于传统IO而言,流是单向的。对于NIO而言,有了Channel管道这个概念,我们的读写都是双向的(铁路上的火车能从深圳去北京、自然就能从北京返还到深圳)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NIO简介
  • NIO和IO的区别
  • Buffer和Channel介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档