`

Java BIO NIO 机制原理资料整理

阅读更多

转自:http://www.xiaoyaochong.net/wordpress/?p=43

BIO情况下,能支持的连接数有限,一般都采取accept获取Socket以后采用一个thread来处理,one connection one thread。无论连接是否有真正数据请求,都需要独占一个thread。

Server端通常由一个thread来监听connect事件,另外多个thread来监听读写事件。这样做的好处是这些连接只有在真是请求的时候才会创建thread来处理,one request one thread。这种方式在server端需要支持大量连接但这些连接同时发送请求的峰值不会很多的时候十分有效。

 

Netty提供了NIO与BIO(OIO)两种模式处理这些逻辑,其中NIO主要通过一个Boss线程处理等待链接的接入,若干个Work线程 (从worker线程池中挑选一个线程,赋给由Boss线程创建好的Channel实例,因为Channel实例持有真正的Java网络对象)接过Boss线程递交过来的Channel进行数据读写,接着触发相应事件传递给ChannelPipeline进行数据处理,由Handler处理实际的业务逻辑。

BIO(OIO)方式 服务器端虽然还是通过一个Boss线程来处理等待链接的接入,但是客户端是由主线程直接connect,另外写数据C/S两端都是直接主线程写,而数据读操作是通过一个Worer 线程Bolck方式读取(一直等待,直到读到数据,除非channel关闭)。

 

参考资料:

http://hi.baidu.com/hxzon/item/5b27c0091189ae30a2332a48

http://www.myexception.cn/internet/973564.html

http://www.oschina.net/question/16_9863?sort=default&p=2

http://furturestrategist.iteye.com/blog/1463369

分享到:
评论

相关推荐

    Java NIO——Selector机制解析三(源码分析)

    本文将深入探讨Java NIO中的Selector机制,并通过源码分析来理解其实现原理。 Selector机制是Java NIO中的核心组件,它允许单线程同时监控多个通道(Channels)的状态变化,例如连接就绪、数据可读或可写等。这种...

    Java-NIO-Programming-Cookbook(含源码)

    Java NIO(非阻塞I/O)编程是Java平台中的一种高效I/O处理方式,相比传统的BIO(阻塞I/O),NIO提供了更灵活、性能更高的数据传输机制。本书《Java NIO Programming Cookbook》旨在深入浅出地介绍如何利用Java NIO...

    Java语言基础教程-Java NIO流篇1

    Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的BIO(Block I/O)模型不同,NIO提供了更高效的数据处理方式,特别适合于高并发、大数据量的网络应用。在Java NIO流篇1的学习中,我们将深入...

    java nio 原理浅析

    Java NIO(非阻塞I/O)是一种在Java中实现高效I/O操作的方式,相比于传统的BIO(阻塞I/O),NIO具有更好的性能和更低的资源消耗,特别是在高并发和大数据传输的场景下。Netty是基于Java NIO的一个高性能、异步事件...

    javaNIO javaNIO

    Java NIO(New I/O)是Java SE 1.4版本引入的一种新的I/O处理方式,它提供了与传统BIO(Blocking I/O)不同的数据处理机制。NIO的核心组件包括`Channels`、`Buffers`和`Selectors`。与传统的基于流(Stream)的方式...

    一文彻底理解Java中IO的BIO、NIO、AIO

    在Java的发展历程中,IO模型经历了三个主要阶段:BIO(Blocking IO)、NIO(Non-blocking IO)和AIO(Asynchronous IO),这三种模型各自有其特性和适用场景,下面将详细解析它们的工作原理和区别。 **1. BIO(阻塞...

    Java NIO 国外 PPT 课件(精华)

    Java NIO,全称为Non-Blocking Input/Output,是Java平台中用于替代标准阻塞I/O(BIO)模型的一种新机制。这个概念在Java 1.4版本中被引入,目的是提供一种更加高效的数据传输方式,特别是在处理大量并发连接时。本...

    分布式Java中的TCP/IP+NIO

    接下来,我们讨论NIO(Non-blocking Input/Output),它是Java 1.4引入的一种新的I/O模型,与传统的阻塞I/O(BIO)相比,NIO具有更高的并发性能。在BIO中,每个连接都需要一个线程来处理,当连接数量增多时,线程...

    《Java NIO》Download Url

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

    java网络编程NIO视频教程

    ### Java网络编程NIO视频教程知识点汇总 #### 1. Java NIO-课程简介 - **主要内容**:简述Java NIO(New IO)的概念及其与传统IO的区别。 - **学习目标**:理解NIO的基本原理及应用场景。 #### 2. Java NIO-概述 -...

    BIO,NIO,AIO,Netty面试题

    在Java开发领域,BIO(Blocking I/O)、NIO(Non-blocking I/O)、AIO(Asynchronous I/O)以及Netty框架是网络编程中的重要概念,对于Java开发工程师来说,理解并掌握这些技术是必不可少的。以下是对这些知识点的...

    java nio

    Java NIO,全称为Non-Blocking Input/Output,即非阻塞输入/输出,是Java在J2SE 1.4版本中引入的一种新的I/O模型,是对传统BIO(Blocking I/O)模型的一种有效补充。它提供了更高效的数据传输方式,尤其是在处理大量...

    JAVA NIO 聊天室程序

    - NIO与传统的BIO(Blocking I/O)模型最大的区别在于,NIO不是阻塞式的,当没有数据可读或写时,线程不会被挂起,而是立即返回,提高了系统资源的利用率。 - NIO的核心组件包括:选择器(Selector)、通道...

    基于nio的简易聊天室

    在Java编程领域,NIO(New Input/Output)是一个重要的概念,它提供了非阻塞I/O操作的能力,相比传统的BIO(Blocking I/O),在处理大量并发连接时表现出更高的效率和性能。本项目"基于nio的简易聊天室"旨在通过NIO...

    NIO(java)原生实现,没有用任何框架

    Java NIO,全称为Non-Blocking Input/Output,是Java平台提供的一种I/O模型,它与传统的阻塞I/O模型(BIO)相比,具有更高的并发性能。在Java NIO中,我们不再需要为每个连接创建一个新的线程,而是通过一个选择器...

    NIO项目源码.zip

    NIO(New Input/Output)是Java平台中用于提高I/O性能的一种编程模型,与传统的BIO(Block I/O)模型相比,NIO提供了非阻塞的读写方式,能够更有效地处理大量的并发连接。本项目源码包含了NIO相关的实现,通过分析...

    Java中网络IO的实现方式(BIO、NIO、AIO)介绍

    "Java中网络IO的实现方式(BIO、NIO、AIO)介绍" Java中网络IO的实现方式是指在Java语言中实现网络输入/输出操作的方法。根据不同的实现方式,可以分为三种:BIO(Blocking I/O)、NIO(Non-Blocking I/O)和AIO...

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

    Java NIO,自Java 1.4版本引入,是一种非阻塞I/O模型,相较于传统的BIO( Blocking I/O)模型,它提供了更高的性能和更灵活的编程方式。NIO的核心组件包括选择器(Selector)、通道(Channel)和缓冲区(Buffer)。...

    java nio 详解

    传统的Java I/O(通常称为BIO或Blocking I/O)在处理大量并发连接时存在一定的性能瓶颈。为了解决这些问题,在JDK 1.4中引入了一个全新的输入/输出库——NIO(New Input/Output),它提供了高速、面向块的I/O操作,...

    java 面试 百度入职老哥整理 全是干货

    - Java中的网络IO模型,包括BIO、NIO和AIO的原理与区别。 6. Java安全 - Java中的安全加密相关知识点,包括了数据加密和安全通信的机制。 7. 操作系统和Linux相关知识 - 操作系统中进程、线程、同步机制等基础...

Global site tag (gtag.js) - Google Analytics