BIO、NIO 和 AIO 的区别?
1. 基本概念
- BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。
- 伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。
- NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。
- AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理。
2. 常规区别
- BIO是面向流的,NIO是面向缓冲区的;
- BIO的各种流是阻塞的。
- 而 NIO是非阻塞的;
- BIO的Stream是单向的,而NIO的channel是双向的。
NIO的特点:事件驱动模型、单线程处理多任务、非阻塞I/O,I/O读写不再阻塞,而是返回0、基于block的传输比基于流的传输更高效、更高级的IO函数zero-copy、IO多路复用大大提高了Java网络应用的可伸缩性和实用性。
基于Reactor线程模型。 在 Reactor模式中,事件分发器等待某个事件或者可应用或个操作的状态发生,事件分发器就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。
如在 Reactor中实现读:注册读就绪事件和相应的事件处理器、事件分发器等待事件、事件到来,激活分发器,分发器调用事件对应的处理器、事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。

猜你喜欢LIKE
相关推荐HOT
更多>>
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
撤销提交信息: 首先,通过git log查看提交信息,以便获取需要回退至的版本号; 然后,通过git reset --soft <版本号>重置至指定版本的提交,达...详情>>
2022-11-17 11:29:00
你了解哪些加密算法?
RSA RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。MD5的文本或者一行字符,这行...详情>>
2022-11-08 17:54:54
final在Java中有什么作用?
如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。如果引用时类的成员变量,则...详情>>
2022-10-26 16:37:00
说一下类加载的执行过程
加载指的是将类的class文件读入到内存中,并为之创建一个java.lang.Class对象。 类的加载由类加载器完成,类加载器由JVM提供,开发者也可以通过...详情>>
2022-10-11 16:38:00
数据库有哪些锁?
使用 COMMIT 或 ROLLBACK 语句释放锁。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。表级锁...详情>>
2022-10-11 14:51:00Java丝瓜视频苹果app下载 问答更多>>
新java前端和后端哪个容易学?
新java开发工程师需要学什么?
新java初学者如何入门?
新java的发展和前景如何?
新java编程入门先学什么?难不难
新java丝瓜视频苹果app下载 出来工资大概多少?
新java工程师是做什么的?
Java面试题库 更多>>
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
final在Java中有什么作用?
如果系统响应变慢,你会怎么排查?
Java中都有哪些引用类型
开班信息
北京校区
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
