`
jianfulove
  • 浏览: 120050 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
社区版块
存档分类
最新评论

打比方理解 NIO 中的角色

    博客分类:
  • NIO
nio 
阅读更多

打比方理解 NIO 中的角色

 

Channel 通道

 

Buffer 缓冲区

 

Selector 选择器

 

其中Channel对应以前的流,Buffer不是什么新东西,Selector是因为nio可以使用异步的非堵塞模式才加入的东西。

 

以前的流总是堵塞的,一个线程只要对它进行操作,其它操作就会被堵塞,也就相当于水管没有阀门,你伸手接水的时候,不管水到了没有,你就都只能耗在接水(流)上。

 

nio的Channel的加入,相当于增加了水龙头(有阀门),虽然一个时刻也只能接一个水管的水,但依赖轮换策略,在水量不大的时候,各个水管里流出来的水,都可以得到妥善接纳,这个关键之处就是增加了一个接水工,也就是Selector,他负责协调,也就是看哪根水管有水了的话,在当前水管的水接到一定程度的时候,就切换一下:临时关上当前水龙头,试着打开另一个水龙头(看看有没有水)。

 

当其他人需要用水的时候,不是直接去接水,而是事前提了一个水桶给接水工,这个水桶就是Buffer。也就是,其他人虽然也可能要等,但不会在现场等,而是回家等,可以做其它事去,水接满了,接水工会通知他们。

分享到:
评论

相关推荐

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    实工作中常常遇到的 I/O 问题,并了解这些新特性如何对响应速率、可伸缩性和可靠性产生直接影 响。 NIO API 是对 1.3 版 I/O 特性的补充而非取代,因此,何时使用新的 API,何时老的 1.3 版 I/O API 更适合特定应用...

    一站式学习Java网络编程 全面理解BIO:NIO:AIO1

    本课程旨在帮助学生全面理解 Java 网络编程中的 BIO、NIO、AIO 三剑客,掌握 RPC 编程的基础知识,并结合实战项目巩固所学。 一、网络编程三剑客 - BIO、NIO、AIO BIO(Blocking I/O)是一种同步阻塞式 I/O 模式,...

    Java NIO中文教程

    Java NIO(New IO)是 Java IO API 的替代方案(从 Java 1.4 开始), 它替代标准的 Java IO 和 Java 网络 API。 Java NIO 提供了与标准 IO 不同的 IO 工作方式。 英文原版由知名的Jenkov编写而成。原文链接:...

    动态演示nio中的buffer相关操作.zip

    这个压缩包“动态演示nio中的buffer相关操作.zip”显然是为了帮助用户直观地理解NIO Buffer的工作机制,通过动态演示来展示Buffer如何存储、读取和传输数据。 在Java NIO中,Buffer是一个特定类型的数组,用于临时...

    java NIO 中文开发文档

    2. **缓冲区(Buffers)**:在Java NIO中,数据总是被读入或写入缓冲区。缓冲区本质上是一个可以存储特定类型数据(如字节、字符、整数等)的数组。它提供了一种更有效的方式来处理输入和输出,因为你可以预处理数据...

    Java NIO 中英文版

    - **选择器**:Java NIO中的选择器允许单个线程监控多个通道,当这些通道准备进行读写操作时,选择器会通知线程,从而提高了多路复用的能力,有效利用了系统资源。 3. **文件系统操作** - Java NIO提供了一组文件...

    深入Hotspot源码与Linux内核理解NIO与Netty线程模型.rar

    接下来,Linux内核在NIO中的角色不可忽视。NIO(Non-blocking I/O)是一种I/O模型,与传统的阻塞I/O不同,它允许多个操作并行进行,提高了系统资源的利用率。在Linux内核中,NIO依赖于epoll系统调用,提供了一种高效...

    NIO入门pdf分享

    《NIO入门》一书是理解Java NIO(New Input/Output)的重要参考资料,NIO在Java编程中扮演着至关重要的角色,特别是在处理高并发、大数据传输等场景下。本PDF文档将引领读者深入理解这一核心概念。 NIO,全称New ...

    基于nio的简易聊天室

    通道是NIO中的一个重要组成部分,它可以看作是连接到I/O设备(如硬盘、网络等)的双向数据流。Java NIO提供了多种类型的通道,如SocketChannel用于网络通信,FileChannel用于文件读写。在这个聊天室项目中,服务器...

    Java NIO 中英文版 + Pro Java 7 NIO.2

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于高效处理I/O操作的重要框架。它在Java 1.4版本中被引入,替代了传统的IO模型,提供了更高级别的I/O操作机制,以适应并发编程的需求...

    Java NIO英文高清原版

    1. **通道(Channel)**:在NIO中,数据是通过通道进行传输的。通道是一种连接到I/O设备(如文件、套接字或网络接口)的途径,可以实现数据的读取和写入。与BIO中的流不同,通道是双向的,既可以读也可以写。 2. **...

    基于nio实现的多文件上传源码

    NIO中的“非阻塞”意味着当数据不可用时,读写操作不会被挂起,而是立即返回,这极大地提高了程序的效率。NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。通道代表了数据的来源或目的...

    Java中的NIO:深入理解与IO的区别、原理及代码实现

    在Java编程中,IO(Input/Output)和NIO(New Input/Output)是处理数据流的两种不同机制。随着JDK 1.4的引入,NIO以其高效性和灵活性...理解NIO的工作原理和正确使用它的API,可以显著提高应用程序的性能和可伸缩性。

    NIO 服务器客户端例子

    Java NIO(New IO)是Java 5及更高版本中引入的一个重要特性,它提供了与标准的Java IO API不同的I/O工作方式。NIO代表非阻塞I/O,它的核心特点是能够实现多路复用,使得一个单线程可以同时处理多个连接,极大地提高...

    Java IO与NIO:深入理解与实践指南

    Java IO和NIO提供了两种不同的I/O处理方式,各有优势和适用场景。IO适用于简单的I/O操作,而NIO则适合于需要高性能和高并发的应用。了解这两种I/O处理方式的区别和特点,可以帮助开发者根据具体的应用需求选择合适的...

    NIO 入门.chm,NIO 入门.chm

    3. **选择器(Selector)**:选择器是NIO中的多路复用器,它允许单个线程监控多个通道,当这些通道准备就绪进行读写操作时,选择器会通知程序。通过使用选择器,可以实现高并发的服务器端设计,如Epoll或Select模型...

    Java NIO系列教程(一) Java NIO 概述

    在Java NIO中,所有IO操作都是从Channel开始的。Channel类似于传统的流,但它提供了更多的功能和灵活性。数据可以从Channel读取到Buffer中,也可以从Buffer写入到Channel中。 - **Channels**:Channels代表了一个...

Global site tag (gtag.js) - Google Analytics