`
xly_971223
  • 浏览: 1273856 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

理解nio

    博客分类:
  • java
阅读更多
传统IO的缺点
以socket通信为例
通常服务端用线程来处理客户点请求 一个客户连接一个线程
对于请求特别多的服务 会产生大量线程
jvm会为每个线程分配固定大小的堆栈空间,线程越多 消耗内存越多
采用线程池可使线程重用,但io阻塞导致jvm频繁转让cpu使用权,浪费许多时间

理解非阻塞
当操作还没就绪时就返回,而不是在傻傻的等
如inputStream.read();
如果没有数据可读就返回,或者没有足够数据则读取现有数据然后返回
0
0
分享到:
评论

相关推荐

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

    《深入Hotspot源码与Linux内核理解NIO与Netty线程模型》这份资料主要探讨了Java的Hotspot虚拟机源码、Linux内核、非阻塞I/O(NIO)以及Netty框架的线程模型。这些知识点在构建高性能、高并发的网络应用中至关重要。 ...

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

    首先,理解NIO的基本概念是必要的。NIO中的“非阻塞”意味着当数据不可用时,读写操作不会被挂起,而是立即返回,这极大地提高了程序的效率。NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器...

    javaNiO.doc

    为了更直观地理解NIO的优势,下面通过一个具体的例子来比较使用传统I/O和NIO读取文件的差异。 ```java // 使用传统I/O读取文件 public void ioRead(String file) throws IOException { FileInputStream in = new ...

    基于nio的简易聊天室

    在Java编程领域,NIO(New Input/Output)是一个重要的概念,它提供了非阻塞I/O操作的能力,相比传统的BIO(Blocking I/O),在处理大量并发连接...通过这个项目,开发者可以深入理解NIO在实际应用中的工作原理和优势。

    java NIO实例

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,它为Java应用程序提供了更高效的数据传输...学习和理解NIO,对于开发高并发、高性能的Java应用至关重要。

    《NIO与Socket编程技术指南》_高洪岩

    通过阅读《NIO与Socket编程技术指南》,读者不仅可以理解NIO和Socket的基本原理,还能学习到如何在实际项目中有效地利用这些技术,提升网络应用的性能和可扩展性。这本书对于希望深入学习Java网络编程的开发者来说,...

    深入浅出NIO

    《深入浅出NIO》 在Java编程领域,NIO(New Input/Output)是一种用于替代标准IO模型的机制,其核心在于非阻塞的I/O操作和通道(Channel)...通过理解NIO的基本概念和机制,我们可以构建出更高效、可扩展的应用程序。

    nio入门 IBM教材,pdf格式

    - **参考资料**:本教程提供了一系列的代码示例,每个示例都是完整的 Java 程序的一部分,可以帮助读者更深入地理解 NIO 的各个组件。 - **代码下载与运行**:建议读者下载并运行这些代码示例,以加深对 NIO 概念的...

    apache nio 很好的学习资料

    首先,我们要理解NIO的基本理念。传统的BIO模型在进行I/O操作时,如果一个线程正在读取或写入数据,那么这个线程会一直被阻塞,直到I/O操作完成。而在NIO中,I/O操作不再阻塞线程,而是采用“选择器”(Selector)来...

    NIOServer

    “工具”可能指的是这个NIOServer可以作为开发其他网络应用的基础框架,或者作为一个辅助工具来测试和理解NIO特性。 【文件】:“NIOServer.java”是整个项目的主文件,很可能包含了服务器的启动逻辑、NIO服务的...

    大数据学习之旅——NIO源码

    本篇文章将带你深入理解NIO的源码,揭示其在大数据环境下的应用与优势。 NIO与传统的IO模型(-blocking I/O)相比,主要的区别在于它允许单线程处理多个通道(channels),而无需为每个通道创建一个单独的线程。...

    java nio 实现socket

    在探讨如何使用Java NIO实现Socket通信之前,我们需要先理解NIO(Non-blocking I/O,非阻塞I/O)与传统阻塞I/O之间的区别。 **传统阻塞I/O模型**:在传统的Java IO编程中,当我们调用`read()`或`write()`方法时,...

    java nio 聊天室源码

    Java NIO(New IO)是Java 1.4版本引入的一个新模块,全称为New Input/Output,是对传统IO API的扩展...通过分析和理解这个项目,开发者不仅可以深入理解NIO的工作原理,还能掌握如何将NIO应用到实际的并发网络编程中。

    Servlet API 和 NIO: 最终组合在一起

    解决这些问题通常需要深入理解NIO的工作原理,包括缓冲区(Buffer)、通道(Channel)、选择器(Selector)等核心概念,并且需要对Servlet容器的内部机制有一定的了解。 在提供的文件列表中,"src"目录可能包含了源...

    nio.rar_Different_NIO_java nio package

    这些例子可以帮助开发者深入理解NIO的工作原理,掌握如何在实际项目中应用NIO技术,提高Java应用程序的性能和并发处理能力。通过分析和学习这些示例,可以更好地理解和实践Java NIO的各种特性。

    《Java NIO》Download Url

    阅读这本书,可以帮助开发者深入理解NIO的工作机制,提高Java I/O编程的能力。通过提供的下载链接(https://yzhm.iteye.com/blog/70419),你可以获取这本书的PDF版进行学习。 总的来说,Java NIO是一种强大的I/O...

    NIO实例

    标签中的"源码"可能意味着博客中会深入到NIO的内部实现,讨论相关类和方法的工作原理,这对于理解NIO机制及其性能优化至关重要。而"工具"可能是指博主介绍了一些辅助开发NIO应用的库或框架,例如Netty,它是一个基于...

    nio 服务器/客户端模式

    在Java编程领域,NIO(New Input/Output)是一种非阻塞I/O模型,与传统的BIO(Block I/O)模型相比,它提供了更...在实际开发中,我们不仅要理解NIO的基本原理,还要根据业务需求灵活运用,以实现高性能的网络服务。

    手写 tomcat nio

    在深入探讨手写Tomcat NIO之前,我们首先需要理解NIO(Non-blocking I/O)的概念。NIO是Java提供的一个用于替代传统I/O模型(即BIO,Blocking I/O)的库。在BIO中,每个连接都需要一个单独的线程进行处理,当并发...

Global site tag (gtag.js) - Google Analytics