`

java NIO实战

阅读更多

 一、NIO应用场景

1、写爬虫

2、做通讯服务器就经常有用,还有些自定义的socket接口什么的。不过现在其实框架很多了。

3、比如游戏服务端

4、与传统IO的优势
    在老的IO包中,serverSocket和socket都是阻塞式的,因此一旦有大规模的并发行为,而每一个访问都会开启一个新线程。这时会有大规模的线程上下文切换操作(因为都在等待,所以资源全都被已有的线程吃掉了),这时无论是等待的线程还是正在处理的线程,响应率都会下降,并且会影响新的线程。 
    而NIO包中的serverSocket和socket就不是这样,只要注册到一个selector中,当数据放入通道的时候,selector就会得知哪些channel就绪,这时就可以做响应的处理,这样服务端只一个线程就可以处理大部分情况(当然有些持续性操作,比如上传下载一个大文件,用NIO的方式不会比IO好。

 

二、华为NIO架构

1. BIO模型存在的问题

传统同步阻塞通信面临的主要问题如下:

1) 性能问题:一连接一线程模型导致服务端的并发接入数和系统吞吐量受到极大限制;

2) 可靠性问题:由于I/O操作采用同步阻塞模式,当网络拥塞或者通信对端处理缓慢会导致I/O线程被挂住,阻塞时间无法预测;

3) 可维护性问题:I/O线程数无法有效控制、资源无法有效共享(多线程并发问题),系统可维护性差

 

2. 以Netty为代表的NIO框架已经成熟

1、Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证,例如Hadoop的RPC框架avro使用Netty作为底层通信框架;很多其他业界主流的RPC框架,也使用Netty来构建高性能的异步通信能力。 

2、

 

分享到:
评论

相关推荐

    Java NIO实战开发多人聊天室

    01-Java NIO-课程简介.mp4 05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 ...

    Java NIO实战之聊天室功能详解

    Java NIO实战之聊天室功能详解 Java NIO实战之聊天室功能详解主要介绍了Java NIO实战之聊天室功能,结合实例形式详细分析了Java NIO聊天室具体的服务端、客户端相关实现方法与操作注意事项。 Java NIO概述 Java ...

    java nio入门学习,两个pdf

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在Java 1.4版本中引入,NIO提供了一种全新的I/O编程方式,使得Java开发者能够更高效地处理I/O操作...

    java nio实战代码.rar

    #资源达人分享计划# java nio从入门到精通的代码详解 主要结合博文进行学习 详情可配合我的博客进行学习 https://blog.csdn.net/weixin_47872288/article/details/120342049

    Java NIO (中文版).pdf

    Java NIO,全称为Non-...书中应该涵盖了理论知识、实例解析以及实战技巧,帮助Java开发者更好地掌握这一关键技术。无论是网络编程、文件操作还是服务器开发,NIO都能提供强大的支持,是Java开发者的必备技能之一。

    java开发实战经典

    《Java开发实战经典》这本书是Java开发者的重要参考资料,它涵盖了Java编程语言的核心技术和实践应用。以下将详细解析这本书可能涉及的知识点。 1. **Java基础知识**:书中首先会介绍Java的基础概念,包括Java的...

    javaNiO.doc

    ### Java NIO (New IO) 详解 #### 1. 引言 在Java的世界里,I/O(Input/Output)操作是程序与外部环境进行交互的重要方式之一。随着技术的发展,传统I/O模型逐渐显露出一些局限性,特别是在处理高并发场景下,其...

    java 开发实战经典

    学习Java还要涉及IO流和NIO(New IO)系统,用于读写文件和网络通信。 对于进阶学习者,线程和并发编程是提升程序性能的关键。Java提供了强大的线程管理机制,包括同步和锁机制,使多个线程能够同时执行任务。此外...

    Java开发实战经典.李兴华

    5. **IO流与NIO**:Java的IO流系统提供了读写文件、网络通信等功能,而NIO(非阻塞I/O)是Java 1.4引入的新特性,能提高程序的效率,书中会对比分析两者的差异和使用场景。 6. **多线程编程**:Java提供了丰富的多...

    Java开发实战1200例(第1卷)

    同时,读者还能学习到Java的IO和NIO(非阻塞IO)框架,以及XML和JSON的处理,这些都是数据交换和网络通信中的常见需求。 为了更好地理解和应用这些知识,本书还包含了大量的实战项目,涵盖Web开发、数据库操作、...

    java_Nio_server_and_j2me_client.rar_J2ME SERVER_NIO_j2me_j2me ni

    Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的BIO(Block I/O)模型相比,NIO具有...对于Java和J2ME开发者来说,这是一个很好的实战案例,能够深入理解NIO机制以及如何将其应用于实际项目。

    Java开发实战经典

    本书将介绍Java如何读写文件,处理流,以及使用NIO(New IO)进行高效的数据传输。同时,网络编程的知识也有所涉及,包括套接字通信和HTTP客户端/服务器实现。 数据库连接和操作也是Java开发中常见任务。书中会讲解...

    Java_NIO框架Netty教程.pdf

    Java NIO(New IO)框架是Java平台中用于处理I/O操作的一种非阻塞I/O模型,相较于传统的IO模型,NIO提供了更高性能和更灵活的编程方式。Netty是基于Java NIO构建的一个高性能、异步事件驱动的网络应用程序框架,它极...

    java开发实战1200例

    《Java开发实战1200例》是一部全面且深入的Java编程教程,旨在通过大量实例帮助读者掌握实际的开发技能。尽管我们仅能探讨其中的第20至60个例子,但这些案例覆盖的范围广泛,涵盖了Java编程的基础到进阶知识。 首先...

    Java开发实战经典(名师讲坛)].李兴华.pdf

    4. **IO与NIO**:Java的输入/输出(IO)和新输入/输出(NIO)系统提供了读写文件、网络通信等功能。学习这部分内容有助于开发者实现数据的高效传输和存储。 5. **多线程编程**:Java内置了强大的多线程支持,允许...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    Java SpringBoot 整合Mina框架,涉及到的核心技术主要包括Java NIO(非阻塞I/O)、Mina框架以及SpringBoot的集成应用。本教程旨在帮助开发者深入理解和掌握这些技术,并提供了一个可直接使用的基础平台框架。 Java ...

    Java开发实战经典-李兴华

    5. **IO与NIO**:Java的输入输出系统(IO)和新IO(NIO)也是重要的章节,书中详细阐述了文件操作、字节流、字符流、缓冲区以及选择器的概念,为处理数据输入输出提供了强大的工具。 6. **多线程**:Java的并发编程...

    从NIO到Netty,编程实战出租车905协议-08172347.pdf

    905.4-2014协议,是交通运输部公路科学研究院起草定制的一个协议标准,它也是基于TCP之上的一个应用层传输协议。 第2章,介绍在Socket编程过程中一些基础知识,让大家建立起对这块知识...想通过实战入门NIO、Netty。

    Java开发实战经典(名师讲坛)

    《Java开发实战经典》是一本深受开发者欢迎的Java编程教程,尤其对于初学者而言,它提供了深入浅出的讲解和丰富的实例,旨在帮助读者掌握Java编程的基础与实战技巧。本书的核心内容围绕Java语言的面向对象特性展开,...

Global site tag (gtag.js) - Google Analytics