NIO-概览



NIO-概览

目录

NIO-概览
NIO-Buffer
NIO-Channel
NIO-Channel接口分析java

前言

原本是想学习Netty的,可是Netty是一个NIO框架,所以在学习netty以前,仍是先梳理一下NIO的知识。经过剖析源码理解NIO的设计原理。编程

本系列文章针对的是JDK1.8.0.161的源码。微信

什么是NIO

NIO又叫Non-blocking I/O或New I/O;全新的输入输出标准库。网络

关于I/O访问方式和I/O模型能够在《高性能网络通信原理》了解一下。并发

Java NIO是Java 1.4版加入的新特性,NIO弥补了原来的阻塞I/O的不足。
NIO引入了通道、缓冲区、选择器三个核心组件。经过这三个组件对文件,网络进行读写。框架

通道

通道是对原I/O包中的流的模拟。与文件设备交互的全部数据都必须经过一个Channel对象,
好比读写文件流就须要建立一个FileChannel对象,而读写网络流则须要建立SocketChannel对象。性能

缓冲区

传统的IO API是面向字节流的,而在NIO中引入了Buffer(缓冲区),Buffer则和Channel进行数据交互。咱们则从Buffer读写数据。学习

选择器

传统的阻塞I/O 每个网络链接都须要一个线程读写网络流,并发量增高会产生大量的线程上下文切换,存在性能瓶颈。而NIO则可使用一个线程接收客户端链接,经过少许的几个线程作读写操做。这样极大的减小了线程数量从而提升了性能。经过选择器告知哪些I/O就绪,并且咱们能够经过不一样的选择器实现不一样的策略,而不影响其余模块,实现解耦。.net

其余

管道

NIO经过引入Pipe(管道)实现单向通信

FileLock

NIO的文件锁能够实现文件的独占或共享。

参考文档

  1. 解锁网络编程之NIO的前世此生
  2. 史上最强Java NIO入门:担忧从入门到放弃的,请读这篇!
  3. Java NIO系列教程

20191127212134.png
微信扫一扫二维码关注订阅号杰哥技术分享
出处:http://www.javashuo.com/article/p-dmxplcrn-ex.html 做者:杰哥很忙 本文使用「CC BY 4.0」创做共享协议。欢迎转载,请在明显位置给出出处及连接。

相关文章
相关标签/搜索