前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试高频面试题汇总 I/O专题

Java面试高频面试题汇总 I/O专题

作者头像
Steve Wang
发布2020-09-18 10:12:53
4030
发布2020-09-18 10:12:53
举报
文章被收录于专栏:从流域到海域从流域到海域

Java中的I/O模型 在JDK1.4之前,基于Java的所有socket都是使用阻塞I/O(BIO),JDK1.4提供了非阻塞I/O(NIO)功能,虽然称为NIO但实际上底层模型是I/O多路复用,JDK1.7提出了异步I/O(AIO)功能。

BIO/NIO/AIO区别概述:

  • BIO(Blocking I/O):同步阻塞I/O模式,数据的读写必须在一个线程内等待其完成。
  • NIO(Non-blocking/New I/O):同步非阻塞I/O模型。在Java1.4中引入了NIO框架,对应java.nio包,提供了Channel,Selector,Buffer等抽象。它支持面向缓冲,基于通道的I/O操作方法。NIO提供了与传统BIO中的SocketSeverSocket相对应的SocketChannelServerSocketChannel两种不同的套接字的通道实现,两种通道都支持阻塞和非阻塞I/O模型。阻塞模型就是传统的I/O一样,比较简单但是性能和可靠性都不好;非阻塞模型正好与之相反。对于低负载、低并发的应用程序,可以使用同步阻塞I/O来提升开发速率和更好的维护性;对于高负载、高并发的(网络)应用,应使用NIO的非阻塞模型来开发。
  • AIO(Asynchronous I/O):AIO也就是NIO 2,与Java1.7中引入,它是异步非阻塞的IO模型。异步IO基于事件和回调机制实现,即应用操作之后会直接返回,不会阻塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。

NIO虽然提供了非阻塞的方法,但是NIO的IO行为还是同步的,对于NIO来说,我们的业务线程是在IO操作准备好时,得到通知,接着就由这个线程自行进行I/O操作,IO操作本身是同步的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档