千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT面试题  >  大数据面试题  >  正文

nio和bio的区别,为啥nio好

来源:千锋教育
发布时间:2022-09-26 11:47:28
分享

  同步阻塞IO(JAVA BIO/Blocking IO ): 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销.

  Java NIO(Non-Blocking IO ) : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

  NIO的优点在于首先基于缓存读写文件,能够批量操作,然后用channel双向读写数据,减少每次打开断开流的资源消耗。

  引入selecore的概念,用一个线程管理多个通道,大大减少线程开销。

nio和bio的区别,为啥nio好

  Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

  AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持I/O属于底层操作,需要操作系统支持,并发也需要操作系统的支持,所以性能方面不同操作系统差异会比较明显。

  另外NIO的非阻塞,需要一直轮询,也是一个比较耗资源的。所以出现AIO

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

相关推荐

  • 请列举几个常用的Linux命令 man :帮助命令 sudo : 获取root权限 jps : 查看java进程 ps -ef : 查看进程 ps -aux : 查看进程 netstat -nltcp : 监听端口 free : 内存查看 top :动态 查看服务器资源信息
  • 单利模式是什么,线程安全吗? 也就是说通过单例我们可以实现数据的全局访问,还可以再全局实现功能的调用.单例分成懒汉式和饿汉式,对于懒汉式会有线程安全问题,需要进行同步处理,对于饿汉式不会有线程安全问题,不需要同步.
  • nio和bio的区别,为啥nio好 同步阻塞IO(JAVA BIO/Blocking IO ): 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销.
  • threadlocal原理 因为在上面的代码分析过程中,我们发现如果没有先set的话,即在map中查找不到对应的存储,则会通过调用setInitialValue方法返回i,而在setInitialValue方法中,有一个语句是T value = initialValue(), 而默认情况下,init...
  • arrayList和LinkedList的区别 Linkedlist基于链表的动态数组,数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
  • 垃圾回收机制(算法原理) 复制清除法:将内存分为两块,其中一块写满后,遍历对象标记有用的对象复制到另一块,然后把这一块清理,这样复制的内容很少而且内存始终连续,缺点是始终需要有一块内存空出来用于复制。