• Java NIO简介:

Java New IO Non Blocking IO,从java1.4版本就开始引入了新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将更加高效的方式进行文件的读写操作。

  • Java NIO与IO的区别:
IO NIO
面向流(Stream Oriented) 面向缓冲区(Buffer Oriented)
阻塞IO(Blocking IO) 非阻塞IO(Non Blocking IO)
选择器(Selector)
  • 面向流和面向缓冲区:

Java NIO与IO的最大的区别就是:IO是面向流,Java NIO是面向缓冲区的。JAVA IO面向流,就意味着他在进行数据操作的时候直接是把数据流从一个方向到另外一个方向等,不需要操作缓冲区。而JAVA NIO是面向缓冲区的,每次操作数据时需要先处理数据流缓冲区,此时在操作数据流缓冲区的时候是可以对数据流进行移动操作的(Bufer允许左右移动数据流读取的位置等)。当缓冲区数据到达了一定的条件时,才开始采取数据流向。

Java IO数据流操作是单向的,而Java NIO数据操作允许数据双向的。

Java NIO

  • 阻塞IO与非阻塞IO:

  Java IO阻塞是指当一个线程在write或read操作时,该线程被阻塞,不可以做其他任何操作,直到write或read操作完成后,该线程才可以继续做其他操作。Java NIO非阻塞模式是指当一个线程通过通道(Channel)发送请求读去数据时,此时它仅可以获取目前可读的数据,如果没有可用数据,此时就什么也不获取,而不保持线程阻塞。

  非阻塞写也一样:一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。

   线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。

  • 通道与缓冲区

  Java NIO系统的核心:通道(Channel)和缓冲区(Buffer)。通道表示打开到IO设备的连接。若需要使用NIO系统,需要获取用于连接IO设备的通道以及用于容纳数据的缓冲区,然后操作缓冲区,对数据进行处理。

  通道(Channel):负责数据传输

  缓冲区(Buffer):负责数据存储

转载于:https://www.cnblogs.com/yy3b2007com/p/7260782.html

Java-NIO(一):简介相关推荐

  1. (一:NIO系列)JAVA NIO 简介

    出处:JAVA NIO 简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是要让Java支持非阻塞I/O, ...

  2. java nio doug_Java NIO简介

    引子 自从 JDK 1.4以后,我们迎来了java.nio这个包.那这个包有什么奥妙和作用呢? 下面我们就来简单介绍一下. I/O简介 I/O或者输入/输出指的是计算机与外部世界或者一个程序与计算机的 ...

  3. JAVA NIO学习一:NIO简介、NIOIO的主要区别

    在前面学习了IO之后,今天我们开始进入NIO学习环节,首先我们会NIO做一个简单的介绍,让大家认识NIO,然后会和IO进行一个对比认识进行区分.好了,下面我们就开始学习: 一.NIO简介 1.概述 从 ...

  4. JAVA NIO 简介(转)

    1.   基本 概念 IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. 所有语言运行时系统提供执行 I/O 较高级 ...

  5. JAVA NIO 简介 (netty源码死磕1.1)

    [基础篇]netty 源码死磕1.1:  JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...

  6. Java NIO————NIO 简介

    引言 Java NIO (New IO,或Non Blocking IO) 是从Java1.4 版本开始引入的一个新的 IO API,可以代替标准的Java IO API. NIO与原来的IO有同样的 ...

  7. Java NIO简介

    1. 介绍 在1.4版本之前,Java的IO库的阻塞IO,简称OIO(Old IO):其后开始,就引入了新的异步IO,称为Java New IO类库,简称Java NIO:主要解决的问题就是同步阻塞的 ...

  8. Java NIO学习系列二:Channel

    上文总结了Java NIO中的Buffer相关知识点,本文中我们来总结一下它的好兄弟:Channel.上文有说到,Java NIO中的Buffer一般和Channel配对使用,NIO中的所有IO都起始 ...

  9. Java NIO学习系列一:Buffer

    从本文开始我会开始总结NIO部分,Java NIO(注意,这里的NIO其实叫New IO)是用来替换标准Java IO以及Java 网络API的,其提供了一系列不同与标准IO API的方式来处理IO, ...

  10. 基于 Java NIO 实现简单的 HTTP 服务器

    1.简介 本文是上一篇文章实践篇,在上一篇文章中,我分析了选择器 Selector 的原理.本篇文章,我们来说说 Selector 的应用,如标题所示,这里我基于 Java NIO 实现了一个简单的 ...

最新文章

  1. 用JavaScript写Session的两种方法
  2. s()++php,jquery siblings()函数正确用法
  3. 使用 plsql 时的配置信息(连远程数据库服务器 到 在本机安装 oracle )
  4. 02.elasticsearch_read_write模型基础
  5. GridView+ZedGraph【转】
  6. SAP Cloud for Customer动态控制任意UI元素的显示或隐藏
  7. The Trip On Abandoned Railway(线段树+树状数组)
  8. 1812:网格_指导设计:网格的历史
  9. fullcalendar 显示的时间间隔只有四十五分钟_NHR系列智能显示控制仪表RS485通信中应用...
  10. Promise 源码:静态方法
  11. 有没有安卓4.0的java模拟器_电脑端安装Android4.0模拟器使用教程
  12. 装机必备:微软常用运行库合集,2022版
  13. deglitch 技术_fdc2214中文资料-技术参考.pdf
  14. 装修工人如何在网上找活
  15. 深度学习中的注意力机制
  16. 原生JS实现addclass
  17. 挖掘长尾关键词的五大思路
  18. Python 淘宝商品价格爬取(requests库+正则表达式)
  19. 转:网络带宽测量工具之iperf
  20. JVM/JDK/JRE/IDE—区别

热门文章

  1. android圆图,Android实现圆形图片或者圆角图片
  2. oracle数据库赋权_(转)Oracle数据库如何授权收费(Database Licensing)
  3. DevOps使用教程 华为云(16)git 日志记录 比较2次提交差异
  4. phpmyadmin 安装mysql5.6
  5. postman调试网站API接口提示需要先登录怎么办
  6. 设计模式之GOF23责任链模式
  7. keil4出现目标未被创建_STM32入门系列-创建寄存器模板
  8. 数据结构回文数c语言,数据结构算法(字符串转整数和回文数)
  9. serv u使用mysql数据库_Serv-u Mysql数据库用户
  10. Mysql 基础操作:DDL、DML、CRUD 与 常用命令