BIO、NIO、AIO、多路复用IO的区别(图解)

Wesley13
• 阅读 1089

原文地址:blog.csdn.net/lzb348110175/article/details/98941378

学习之前,我们先来了解一下IO模型:

       ①同步阻塞IO(Blocking IO):即传统的IO模型。

       ②同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。

       ③多路复用IO(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型(Redis单线程为什么速度还那么快,就是因为用了多路复用IO和缓存操作的原因)

       ④异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非阻塞IO。


图解:

BIO、NIO、AIO、多路复用IO的区别(图解)

BIO、NIO、AIO、多路复用IO的区别(图解)

BIO、NIO、AIO、多路复用IO的区别(图解)

BIO、NIO、AIO、多路复用IO的区别(图解)

看了这些,你应该对这些IO有了新的认识了吧,那就给我个赞呗^_^

本文分享自微信公众号 - JAVA高级架构(gaojijiagou)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java并发编程实践 笔记 2017
\TOC\javaIO模型BIO:JDK1.4之前的IO,阻塞IONIO:linux多路复用技术(select模式)实现IO事件的轮询方式:同步非阻塞的模式,这种方式目前是主流的网络通信模式Mina,netty网络通信框架AIO:jdk1.7
Wesley13 Wesley13
3年前
IO模式与现实中的例子
前言关于IO模式的区别,网络上的文章一搜一大把,但每次阅读时总觉得相当晦涩而且老容易混淆,俗话说好记性不如烂笔头,所以干脆自己写一篇便于自己理解的文章以此帮助记忆和理解,不对之处还请轻喷,先谢谢!1)同步阻塞IO(BlockingIO)BIO2)同步非阻塞IO(NonblockingIO)3)IO多路复用(IOMultipl
Wesley13 Wesley13
3年前
Java核心(五)深入理解BIO、NIO、AIO
导读:本文你将获取到:同/异步阻/非阻塞的性能区别;BIO、NIO、AIO的区别;理解和实现NIO操作Socket时的多路复用;同时掌握IO最底层最核心的操作技巧。BIO、NIO、AIO的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO如何实现多路复用功能
Wesley13 Wesley13
3年前
NIO
1、简介1.1Java中的IO介绍1.BIO:BlockingIO,同步式阻塞式IO,即传统的IO,是java中最早期的流2.NIO:NonBlockingIO,又称NewIO,同步式非阻塞IO,是JDK1.4提供的流3.AIO:AsynchronousIO,异步是非阻塞IO,可以认为是NIO的二代版
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这