NIO-概览
2019-12-05 16:02:37来源:博客园 阅读 ()
NIO-概览
目录
- NIO-概览
- 目录
- 前言
- 什么是NIO
- 通道
- 缓冲区
- 选择器
- 其他
- 管道
- FileLock
- 参考文档
NIO-概览
目录
NIO-概览
前言
本来是想学习Netty的,但是Netty是一个NIO框架,因此在学习netty之前,还是先梳理一下NIO的知识。通过剖析源码理解NIO的设计原理。
什么是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就绪,而且我们可以通过不同的选择器实现不同的策略,而不影响其他模块,实现解耦。
其他
管道
NIO通过引入Pipe(管道)实现单项通讯
FileLock
NIO的文件锁可以实现文件的独占或共享。
参考文档
- 解锁网络编程之NIO的前世今生
- 史上最强Java NIO入门:担心从入门到放弃的,请读这篇!
- Java NIO系列教程
微信扫一扫二维码关注订阅号杰哥技术分享
出处:https://www.cnblogs.com/Jack-Blog/p/11991240.html
作者:杰哥很忙
本文使用「CC BY 4.0」创作共享协议。欢迎转载,请在明显位置给出出处及链接。
原文链接:https://www.cnblogs.com/Jack-Blog/p/11991240.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 5种JVM调优配置方法概览 2019-12-27
- Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概 2019-12-06
- NIO-直接内存 2018-06-18
- EJB3.0新规范概览及其未来发展 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash