共计 865 个字符,预计需要花费 3 分钟才能阅读完成。
既然你能看到这,阐明你有肯定的 Java 根底了,不然咋面试呢?
同步 & 异步,阻塞 & 非阻塞 根本理解
- 同步(阻塞):同步就是发动一个调用后,被调用者未解决完申请之前,调用不返回。
- 异步(非阻塞):异步就是发动一个调用后,立即失去被调用者的回应示意已接管到申请,然而被调用者并没有返回后果,此时咱们能够解决其余的申请,被调用者通常依附事件,回调等机制来告诉调用者其返回后果
BIO:(Blocking I/O) – 阻塞 IO
也叫传统 IO
1) 先将文件内容从磁盘中拷贝到操作系统 buffer
2) 再从操作系统 buffer 拷贝到 程序利用(应用层)buffer
3) 从程序 buffer 拷贝到 socket buffer
4) 从 socket buffer 拷贝到协定引擎.
传统 IO 慢的起因是因为,数据捣腾过好几遍,才走到 socket 中
NIO (New I/O) – 非阻塞 IO
nio 是 New IO 的简称,在 jdk1.4 里提供的新 api。Sun 官网标榜的个性如下:为所有的原始类型提供 (Buffer) 缓存反对。字符集编码解码解决方案。Channel:一个新的原始 I /O 形象。反对锁和内存映射文件的文件拜访接口。提供多路(non-bloking) 非阻塞式的
NIO 不通过应用层的缓存,数据间接放在操作系统的缓存,应用层只是间接发送指令,让操作系统 Read buffer 间接写到 Socket Buffer . 少了内核到应用层之间过渡。
AIO (Asynchronous I/O) – 异步 IO
JDK1.7 外面叫 AIO,JDK1.5 叫 NIO,AIO 才叫做异步 IO,NIO 其实并不是真正意义上的异步 IO,NIO 只是非阻塞 IO。
AIO 连零碎缓存 buffer 都省了,在外层建设 NMAP 的映射,数据地址用一个内存地址,地址不须要倒腾复制。间接读进来间接进来应用。
最初说一句,小编整顿了 2021 最新残缺面试题及答案,有很多干货,蕴含 mysql,netty,spring,线程,spring cloud、jvm、源码、算法等具体解说,也有具体的学习规划图,须要的请看个人简介支付。
如果感觉本文对你有帮忙,请三连反对一下 谢谢!