`
enetor
  • 浏览: 188431 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

为什么要用NIO

阅读更多

进程中所有的线程共享相同的地址空间

static的变量可以被进程中所有线程共享 

一个线程拥有自己的线程栈(stack),每个stack占用一定的内存空间,windows默认为1M,linux要小一些

 

这样一个服务器最多同时能开多少个线程 = 总内存/线程栈大小  ,比如1G  那么最多开 1G/1M = 1024个线程

 

所以不推荐用一个线程服务一个连接的方式,大多采用一个线程服务多个连接的方式,也就是非阻塞IO

 

非阻塞IO分为 水平触发和边缘触发,JDK的NIO 采用select  属于水平触发,就是哪个文件句柄有事件,就触发哪个文件读写,但是不一定流准备完毕。

边缘触发比如epoll,是党文件句柄有事件,并且数据准备完毕,才发起事件,这种效率比水平触发要快,目前JDK7可能会实现。 

 

用NIO的好处:减少内存开销,减少CPU阻塞开销

分享到:
评论

相关推荐

    用NIO解析modbus协议

    标题中的“用NIO解析modbus协议”表明我们要探讨的是如何使用Java的非阻塞I/O(Non-blocking Input/Output,简称NIO)框架来处理Modbus通信协议。Modbus是一种广泛使用的工业通信协议,主要在自动化设备之间进行数据...

    java NIO.zip

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...

    javaNiO.doc

    例如,在开发Web服务器时,可以使用NIO的非阻塞特性来处理大量的并发连接,而无需为每个连接创建单独的线程。 #### 7. 总结 NIO作为Java平台的一项重要技术革新,有效地解决了传统I/O模型中存在的诸多问题。通过...

    Java NIO英文高清原版

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 ...综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据解析方法,可以有效地提升读取速度和处理能力。

    NIO 入门.chm,NIO 入门.chm

    6. **网络I/O**:NIO为TCP和UDP提供了SocketChannel和DatagramChannel,用于处理网络连接。SocketChannel用于TCP连接,而DatagramChannel则用于UDP的无连接通信。 7. **通道与缓冲区的交互**:数据总是通过通道读入...

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

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

    nio demo for nio学习笔记(体系结构以及模块介绍)

    总的来说,NIO为Java开发者提供了更高效的I/O处理能力,尤其在处理高并发和大流量场景时,它的优势更加明显。然而,NIO的学习曲线相对较陡峭,需要对操作系统级别的I/O模型有一定了解,但一旦掌握,将极大地提升系统...

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

    在Java编程领域,NIO(New IO)是一个重要的特性,它是Java 1.4版本引入的,用于替代标准的IO API。NIO提供了一种非阻塞I/O操作的方式,特别适用于处理大量的并发连接,例如在文件传输、网络通信等场景。本主题...

    基于nio的简易聊天室

    在聊天室服务端,Selector的使用可以使得服务器在一个线程中管理多个客户端连接,避免了为每个连接创建单独线程带来的资源消耗。 4. **图形用户界面(GUI)**: 本项目中的聊天室客户端不仅实现了基于NIO的通信,...

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    基于java的BIO、NIO、AIO通讯模型代码实现

    Java作为一门广泛使用的开发语言,提供了多种I/O(Input/Output)通信模型,包括传统的阻塞I/O(BIO)、非阻塞I/O(NIO)以及异步I/O(AIO)。这些通信模型在不同的场景下有着各自的优势,理解和掌握它们对于优化...

    IO和NIO区别

    如果需要管理数千个并发的连接,每一个连接只发送较少的数据(比如聊天服务器),使用 NIO 来实现会比较有优势。如果需要同时保持很多到其他服务器的连接,比如 P2P 网络,使用单线程来管理所有的出口连接会比较有...

    JAVA-NIO-DEMO

    在Java中,注解是一种元数据,可以为编译器、JVM或工具提供有关代码的附加信息。例如,`@Override`注解用来确保方法确实重写了父类的方法,`@Deprecated`表示某个API不再推荐使用。在NIO的上下文中,注解可能被用于...

    java NIO 写文件

    然而,尽管Java NIO提供了很多优势,但在实际使用中,开发者还需要注意一些潜在的问题,如内存管理(缓冲区过大可能导致内存溢出)和复杂性(相对于传统IO,NIO的API可能更复杂)。 总之,Java NIO为处理大数据文件...

    NIO处理大文件

    而在NIO中,这些操作是非阻塞的,如果数据未准备好,通道会立即返回,不会挂起线程,这样就可以避免不必要的等待,提高效率。 5. 选择器(Selectors): 选择器允许单个线程监视多个通道的事件,当某个通道准备...

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

    ### Java NIO 系列教程(一):Java NIO 概述 #### 一、引言 Java NIO(New IO)是Java SE 1.4版本引入的一个新的I/O处理框架,它提供了比传统Java IO包更高效的数据处理方式。NIO的核心在于其三大组件:Channels...

    基于Groovy的NIO框架,仅供学习Java NIO使用。.zip

    Java NIO(New IO)是Java 1.4版本引入的一个新特性,它提供了一种不同于传统IO(-blocking I/O)的I/O操作方式。传统的IO模型是基于流的,通常涉及阻塞式读写,而NIO则引入了通道(Channels)和缓冲区(Buffers)的...

Global site tag (gtag.js) - Google Analytics